Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以更改一个关于构建的集体行动表单吗?_Php_Symfony_Symfony 2.3 - Fatal编程技术网

Php 我可以更改一个关于构建的集体行动表单吗?

Php 我可以更改一个关于构建的集体行动表单吗?,php,symfony,symfony-2.3,Php,Symfony,Symfony 2.3,在表单类的buildForm方法(AbstractTypederived)上,我可以设置该表单的操作吗? 我想做的与构建嵌入式表单时可以使用的setAction方法类似: $form = $this->createFormBuilder() ->setAction($this->generateUrl('my_action')) ->add('field', 'text') ->add('button', 'submit'); 我的意思是,setAct

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

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

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

您可以在
buildForm
方法中访问相同的表单生成器,因此只需在其上调用
setAction
即可:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->setAction($path);
}
问题是如何将
$path
传递给表单类型。其中一种方法是在创建表单时将其作为选项传递。但是如果您正在传递
$path
,为什么不直接设置
操作本身呢

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

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

我还不能提高投票率,因为我的声誉仍然不允许这样做。如果允许的话,我会做的好吗?当然,没问题。这不是要求。这只是对回答者的一种双重感谢。:)