在Symfony2中我可以打电话给Symfony3的setAction在FormType
// MyController.php
$formType = new MyFormType($this->container);
$form = $this->createForm($formType);
// MyFormType.php
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setAction($this
->container
->get('router')
->generate('myAction')
);
// ...
}
}
在symfony3我应该通过string
到createForm
方法,所以我不能够控制或路由器通过向MyFormType
我试着将FormType定义为服务,但不会改变行为。
如何设置MyFormType
(不在MyController
)中的操作?
显示如何将表单类型定义为服务。你应该可以在没有问题的情况下注入路由器。 – Cerad
是的,我注入路由器没有问题,但在我看来,symfony创建窗体类型为“新的FormType”,根本不调用服务(当使用'createForm'方法时)。所以我在FormType中的构造函数被调用时没有任何参数。 – Eddie
不是。如果您将表单类型正确定义为服务,那么createForm功能会将其从容器中拉出。仔细检查你的工作。确保您的服务定义正在使用container:debug进行加载。我保证它会起作用。 – Cerad