Я создал определенный formType: OrganizationsType
.Этот тип принимает 3 параметра в конструкторе.TokenStorage (TokenStorageInterface
), Маршрутизатор (Router
) и интерфейсный объект из моего класса (PreparatorInterface
).Эта форма находится внутри пакета, и я хочу, чтобы каждый создал свой собственный Preparator
, реализовав PreparatorInterface
.
. Поэтому я хотел создать проход компилятора, который мог бы зарегистрировать этот FormType со всеми параметрами.Я пытаюсь это сделать:
$organizationListPreparator = $container->findTaggedServiceIds(self::TAG);
if (empty($organizationListPreparator)) {
throw new \Exception('CoffreoProOrganizationSelectorBundle need a preparator. Check README.');
}
$container->register(OrganizationsForm::class, OrganizationsForm::class)
->addArgument(new Reference('security.token_storage'))
->addArgument(new Reference(key($organizationListPreparator)))
->addArgument(new Reference('router'))
->setAutoconfigured(true)
->setAutowired(true)
->setAbstract(true)
->addTag('form.type');
Но когда я пытаюсь создать экземпляр такой формы
$organizationsForm = $this->createForm(OrganizationsForm::class);
Как я могу сделать что-то подобное?
Редактировать
Я получаю это сообщение об ошибке:
Too few arguments to function OrganizationSelectorBundle\Form\OrganizationsForm::__construct(), 0 passed in /var/www/myProject/vendor/symfony/form/FormRegistry.php on line 92 and exactly 3 expected
[2018-12-18 16:34:38] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalThrowableError: "Too few arguments to function OrganizationSelectorBundle\Form\OrganizationsForm::__construct(), 0 passed in /var/www/myProject/vendor/symfony/form/FormRegistry.php on line 92 and exactly 3 expected" at /var/www/myProject/vendor/organization-selector-bundle/Form/OrganizationsForm.php line 58 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Too few arguments to function OrganizationSelectorBundle\\Form\\OrganizationsForm::__construct(), 0 passed in /var/www/myProject/vendor/symfony/form/FormRegistry.php on line 92 and exactly 3 expected at /var/www/myProject/vendor/organization-selector-bundle/Form/OrganizationsForm.php:58)"} []
Редактировать
Когда я запускаю bin/console deb:container OrganizationForm
Информация для службы "OrganizationSelectorBundle \ Form \ OrganizationsForm"
Значение параметра
Идентификатор службы OrganizationSelectorBundle \ Form \ OrganizationsForm
Класс OrganizationSelectorBundle \ Form \ OrganizationsForm
Теги form.type
Публичный номер
Синтетический номер
Ленивый нет
Общий да
Абстрактный нет
Автосоединение да
Автонастройка да
Я передаю свой компилятор, когда я добавляю дамп ('Я прошел здесь«);умереть();
Когда я запускаю bin/console debug:container --tag form.type
, чтобы перечислить все службы с тегом form.type
Symfony Container Services Tagged with "form.type" Tag
======================================================
--------------------------------------------------------------- ------- ---------------------------------------------------------------
Service ID alias Class name
--------------------------------------------------------------- ------- ---------------------------------------------------------------
App\Form\StaffingCustomerType App\Form\StaffingCustomerType
App\Form\UserType App\Form\UserType
OrganizationSelectorBundle\Form\OrganizationsForm OrganizationSelectorBundle\Form\OrganizationsForm
--------------------------------------------------------------- ------- ---------------------------------------------------------------