在表单classe的buildForm
方法(AbstractType
派生)上,我可以设置该表单的操作吗?
我想要做的是类似于构建嵌入表单时可以使用的setAction
方法:
$form = $this->createFormBuilder()
->setAction($this->generateUrl('my_action'))
->add('field', 'text')
->add('button', 'submit');
我的意思是,setAction
是否等同于表格类?
答案 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,但我不认为在表单类型中做出那种决定是个好主意。