Как в symfony добавить в конструктор объекты в виде массива?
Использую 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 объекты в виде массива?
Ответы (1 шт):
Автор решения: Ghost
→ Ссылка
Вам всего лишь нужно прочесть документацию внимательно, там все прозрачно описано, тык. (Reference Tagged Services обзац)