访问buildForm函数中的服务

时间:2014-12-23 14:38:57

标签: forms symfony types

有没有办法在FormType中访问服务?

我在Service中创建了一个返回数组的函数,我想用它来填充" select"。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您应该声明form type as a service。然后,您将能够为任何其他服务注入一些服务!

# src/Your/OwnBundle/Resources/config/services.yml

services:
    your_own.service_outputing_an_array:
        class: Your\OwnBundle\ServiceOutputingAnArray

    your_own.form.type.your_type:
        class: Your\OwnBundle\Form\Type\YourType
        arguments:
            - @your_own.service_outputing_an_array
        tags:
            - { name: form.type, alias: your_type }

然后,您所需的服务将作为表单类型的构造函数中的第一个参数注入。

答案 1 :(得分:0)

如果您不理解或无法将服务注入表单类型,则只需将其传递给构造函数即可。

示例(在控制器中):

$myService = $this->get('my_service');

$form = $this->createForm(new MyFormType($myService), ..., ...);

和MyFormType:

...

private $myService;

public function __construct(MyService $myService)
{
    $this->myService = $myService;
}

...