如何从控制器中调用一个定义为服务的表单?

时间:2015-07-07 19:52:50

标签: php forms symfony

如何从控制器调用表单(定义为服务)

//Here my code in the controller befor I define Form_NameType() as a service
$form = $this->createForm(new Form_NameType(), $obect_that_hydrate_my_form); 

 // SERVICE
 blogbundle.Form_Nameform:
    class: BlogBundle\Form\Form_NameType
    arguments: [@security.context]
    tags:
      - {name: form.type, alias: FormAsAService }

2 个答案:

答案 0 :(得分:0)

要调用Symfony中的任何服务,您需要使用get ContainerInterface方法。所以在Controller课程中你应该打电话:

$form = $this->container->get('blogbundle.Form_Nameform');

如果Controller扩展Symfony\Bundle\FrameworkBundle\Controller\Controller,则该方法有别名,您可以使用此语法(更短):

$form = $this->get('blogbundle.Form_Nameform');

检查documentation如何使用服务。

答案 1 :(得分:0)

我刚刚找到了怎么做...我以前试过但是我拼错了所以无法工作。

$form = $this->createForm( 'FormAsAService' , $obect_that_hydrate_my_form);

FormAsAService是服务中作为别名定义的名称,应该与getName()函数中表单类中的名称define相同。

public function getName(){ return 'FormAsAService';}