我可以在构建时更改Form Class操作吗?

Nel*_*ira 7 php symfony symfony-2.3

在表单上,​​classe的buildForm方法(AbstractType派生)可以设置该表单的操作吗?我想要做的是类似于setAction构建嵌入表单时可以使用的方法:

$form = $this->createFormBuilder()
  ->setAction($this->generateUrl('my_action'))
  ->add('field', 'text')
  ->add('button', 'submit');
Run Code Online (Sandbox Code Playgroud)

我的意思是,是setAction形式类的等价物吗?

Eln*_*mov 32

您可以访问方法中的相同表单构建器buildForm,因此只需调用setActionon就可以了:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->setAction($path);
}
Run Code Online (Sandbox Code Playgroud)

问题是如何$path将表单类型传递给表单.其中一种方法是在创建表单时将其作为选项传递.但是如果你$path无论如何都要通过,为什么不设置它action自己呢?

$form = $this->createForm(new MyType(), $object, array(
    'action' => $this->generateUrl('my_action'),
));
Run Code Online (Sandbox Code Playgroud)

另一种方法是将路由器注入表单类型并使用它来生成URL,但我不认为在表单类型中做出那种决策是个好主意.