verfaa
Профессор
- Регистрация
- 29 Янв 2007
- Сообщения
- 417
- Реакции
- 49
- Автор темы
- #1
Использую symfony 4.3.11
Создаю TwigFilter
Как видно, в конструктор ProcessorExtension необходимо передать массив объектов типа Driver.
Добавляю в services.yaml сервисы
Пробовал по-разному:
Но неизменно получаю ошибку:
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 объекты в виде массива?
Создаю 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 объекты в виде массива?