У меня есть служба с идентификатором manager_provider
, и я хотел бы создать базовый класс формы с именем ManagerAwareType
, в который будет добавлена эта служба. Поэтому все классы форм, расширяющие этот класс, будут иметь доступ к manager_provider
:
abstract class ManagerAwareType extends AbstractType
{
/** @var ManagerProvider */
private $managerProvider;
// getter and setter...
}
Итак, моей первой попыткой было объявить это, используя _instanceof
в services.yaml
:
_instanceof:
MyBundle\Form\ManagerAwareType:
tags: [form.type]
calls:
- [setManagerProvider, ["@manager_provider"]]
, но когда я создаю форму в Controller, $managerProvider
равен null
. Затем я попытался сделать то же самое программно в классе DependencyInjection\Extension
, и код выполняется без ошибок (проверено отладчиком):
$managerAwareType = new Definition(ManagerAwareType::class);
$managerAwareType->addTag('form.type');
$managerAwareType->addMethodCall('setManagerProvider', [new Definition('manager_provider')]);
$container->addDefinitions([$managerAwareType]);
но опять-таки это не сработало, зависимость не вводится.
Что я делаю не так?
P.S: Я знаю, что могу объявить свою зависимость как параметр формы и внедрить ее каждый раз, когда создаю форму через контроллер, но я предпочитаю этот способ, если это возможно.