将表单注入服务 - 在Symfony中

时间:2016-02-25 17:22:05

标签: php forms symfony dependency-injection expression

我想将一个表单(FormInterface)注入一个服务,在我的例子中,它是一个来自“RegisterType”的表单构建。我知道我可以单独注入formfactory和抽象形式,然后在服务中创建forminterface,但是在服务注入中立即执行它会更好:

# registration
app.form.type.register:
    class: UserBundle\Form\Type\RegisterType
    tags:
        - { name: form.type, alias: app_user_register }

app.form.handler.register:
    class: UserBundle\Form\Handler\RegistrationFormHandler
    arguments: [@=service('form.factory').create('@app.form.type.register')]
    scope: request

和RegistrationFormHandler服务 - 构造函数:

public function __construct(FormInterface $form)
{
    $this->form = $form;
}

所以我第一次尝试在“参数”中使用Symfony Expression语言,但是我收到了错误消息:

  

“无法加载类型'@ app.form.type.register'”

如何使用expression language这里正确将构建的表单注入构造函数?问候。

1 个答案:

答案 0 :(得分:1)

我认为你想要达到的目标是:

app.form.handler.register:
    class: UserBundle\Form\Handler\RegistrationFormHandler
    arguments: [@=service('form.factory').create(service('app.form.type.register'))]
    scope: request