7

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

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

我的意思是,是setAction等价于表单类吗?

4

1 回答 1

32

您可以在方法中访问相同的表单构建器buildForm,因此只需调用setAction它即可:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->setAction($path);
}

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

$form = $this->createForm(new MyType(), $object, array(
    'action' => $this->generateUrl('my_action'),
));

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

于 2013-09-06T09:42:11.050 回答