не могли бы вы мне с этим помочь?
Не удается выполнить автоматическое подключение службы "App \ Estimate \ DocumentManager": аргумент "$ flysystem" метода "__construct ()" ссылается на класс "League \ Flysystem \ Filesystem", но такой службы не существует. Возможно, вам следует присвоить этому классу псевдоним существующей службы oneup_flysystem.estimateDocumentsFilesystem_filesystem.
мой файл конфигурации:
parameters:
flysystem.local.estimate_documents.path: '%kernel.root_dir%/../public/uploads/estimate/documents'
services:
app.estimate.document_manager:
class: App\Estimate\DocumentManager
lazy: true
public: true
arguments: ['@doctrine.orm.entity_manager', '@estimateDocumentsFilesystem', '@monolog.logger']
oneup_flysystem:
filesystems:
estimateDocumentsFilesystem:
adapter: estimateDocumentsAdapter
visibility: public
alias: "estimate_documents_filesystem"
adapters:
estimateDocumentsAdapter:
local:
directory: "%flysystem.local.estimate_documents.path%"
class DocumentManager
{
/**
* @var EntityManager
*/
private $manager;
/**
* @var Filesystem
*/
private $flysystem;
/**
* @var Logger
*/
private $logger;
/**
* DocumentManager constructor.
*
* @param EntityManagerInterface $manager
* @param Filesystem $flysystem
* @param Logger $logger
*/
public function __construct(
EntityManagerInterface $manager,
Filesystem $flysystem,
Logger $logger
)
{
$this->manager = $manager;
$this->flysystem = $flysystem;
$this->logger = $logger;
}
}
Большое спасибо. Я не могу понять, в чем проблема.
// Обновлено:
если я добавлю это, если я добавлю это в конфигурацию
services:
League\Flysystem\FilesystemInterface: '@estimate_documents_filesystem'
он работает только для одной файловой системы, что, черт возьми, не так?
С наилучшими пожеланиями Джимми





Необходимо отключить автоподключение и автоконфигурацию. Добавь это:
autoconfigure:false
autowire:false
Полная конфигурация:
App\Estimate\Document\DocumentManager:
autoconfigure: false
autowire: false
arguments: ['@doctrine.orm.entity_manager', '@estimate_documents_filesystem', '@monolog.logger']
App\User\DocumentManager:
autoconfigure: false
autowire: false
arguments: ['@doctrine.orm.entity_manager', '@user_avatars_filesystem', '@monolog.logger']
Ответ на отключение автоконфигурации, на мой взгляд, глупый, поскольку лучшая практика Symfony - это его использовать.
Проблема в том, что текущая версия OneupFlysystemBundle неправильно настраивает свои службы для правильного использования автоподключения Symfoyny.
Поэтому, пока это не будет исправлено в пакете, правильным решением будет вручную пометить интерфейс для правильной службы. В вашем services.yaml
League\Flysystem\FilesystemInterface: "@estimate_documents_filesystem"
(Примечание: если вы используете конфигурацию этого пакета по умолчанию и следуете его шагам, служба будет называться "@oneup_flysystem.acme_filesystem", или, следуя рекомендациям Symfony, она должна быть "@oneup_flysystem.app_filesystem", если у вас только одна файловая система. Если вы не уверены, вы можете использовать bin/console debug:container для найти правильное название услуги)
Чтобы иметь несколько файловых систем, выполните следующие действия:
services.yaml
services:
_defaults:
bind:
publicUploadFileSystem: '@oneup_flysystem.public_uploads_filesystem_filesystem'
oneup_flysystem.yaml
oneup_flysystem:
adapters:
public_uploads_adapter:
local:
directory: '%kernel.project_dir%/public/uploads'
filesystems:
public_uploads_filesystem:
adapter: public_uploads_adapter
Учебник: https://symfonycasts.com/screencast/symfony-uploads/flysystem-usage#play
это возвращается: `Служба« App \ Service \ UploaderHelper »зависит от несуществующей службы« oneup_flysystem.public_uploads_filesystem_filesystem ». `