Как добавить в services.yaml объекты в виде массива в symfony?

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Использую symfony 4.3.11
Создаю TwigFilter

Код:
    class ProcessorExtension extends AbstractExtension
    {
   
        /**
         * @var Driver[]
         */
        private $drivers;
   
        public function __construct(array $drivers)
        {
            Assert::allIsInstanceOf($drivers, Driver::class);
            $this->drivers = $drivers;
        }
   
        public function getFilters(): array
        {
            return [
                new TwigFilter("work_processor", [$this, "process"], [ 'is_safe' => ["html"] ])
            ];
        }
   
        public function process(?string $text): string
        {
            $result = $text;
            foreach ($this->drivers as $driver) {
                $result = $driver->process($text);
            }
            return $result;
        }
    }

Как видно, в конструктор ProcessorExtension необходимо передать массив объектов типа Driver.

Добавляю в services.yaml сервисы

Код:
    App\Twig\Extension\Work\Driver\:
        resource: '../src/Twig/Extension/Work/Driver/*Driver.php'
        tags: ['app.twig.work_processor.driver']
   
    App\Twig\Extension\Work\ProcessorExtension:
        arguments:
            - !tagged app.twig.work_processor.driver

Пробовал по-разному:

Код:
    App\Twig\Extension\Work\ProcessorExtension:
        arguments: [!tagged app.twig.work_processor.driver]

Но неизменно получаю ошибку:
Argument 1 passed to App\Twig\Extension\Work\ProcessorExtension::__construct() must be of the type array, object given, called in /app/var/cache/dev/ContainerViaxSgZ/srcApp_KernelDevDebugContainer.php on line 974

Вопрос: Как добавить в конструктор класса ProcessorExtension объекты в виде массива?
 
Здесь все есть _symfony.com/doc/4.4/service_container/tags.html
 
Назад
Сверху