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

时间:2013-09-05 23:32:08

标签: php symfony symfony-2.3

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

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

我的意思是,setAction是否等同于表格类?

1 个答案:

答案 0 :(得分: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,但我不认为在表单类型中做出那种决定是个好主意。