Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 Symfony 4更改默认表单名称_Php_Forms_Symfony_Symfony4 - Fatal编程技术网

Php Symfony 4更改默认表单名称

Php Symfony 4更改默认表单名称,php,forms,symfony,symfony4,Php,Forms,Symfony,Symfony4,我在同一控制器中创建了两个未链接到任何实体的表单。 每个表单都有自己的“提交”按钮。 我从不去第二个表单的提交函数。 我认为这是因为这两个表单有相同的默认名称“form”。 问题是如何更改表单名称? 低于我所做的 public function index(Request $request) { $form1 = $this->createFormBuilder() ->add('sn', TextType::class, [ 'req

我在同一控制器中创建了两个未链接到任何实体的表单。 每个表单都有自己的“提交”按钮。 我从不去第二个表单的提交函数。 我认为这是因为这两个表单有相同的默认名称“form”。 问题是如何更改表单名称? 低于我所做的

public function index(Request $request)
{
    $form1 = $this->createFormBuilder()
        ->add('sn', TextType::class, [
            'required' => false,
            ])
        ->add('search', SubmitType::class, ['label' => 'Search'])
        ->getform();
    $form1->handleRequest($request);
    if ($form1->isSubmitted() && $form1->isValid()) {
       //Do something

    }

    $form2 = $this->createFormBuilder();
    $form2->add('Agree', CheckboxType::class, [
                    'label'    => 'Agree',
                    'required' => false,
                ]);
    $form2->add('detail', SubmitType::class, ['label' => 'Detail']);
    $form2 = $form2->getForm();
    $form2->handleRequest($request);
    if ($form2->isSubmitted() && $form2->isValid()) {
        //Do something else
    }

    return $this->render('search/index.html.twig', [
        'form1' => $form1->createView(),
        'form2' => $form2->createView(),
    ]);
}

如果要修改表单名称,请使用createNamed()方法:


您甚至可以通过将其设置为空字符串来完全抑制该名称。

我这样做了,但我遇到的问题似乎与表单名称不同。提交后我仍然没有进入form2验证。您不能同时发送两份表格。如果你需要这个。。。我认为你需要一个包含这两个元素的主表单,或者仅仅是另一个旨在保存两个不同事物的表单。或者类似的东西。你有没有在浏览器中查看生成的html以了解发生了什么?两个表单发布到同一个url有点不寻常。您可以将它们发布到不同的控制器操作。如果($form1),您在
中会做什么?你会回复吗?顺便说一下,您没有向表单添加任何约束,也没有链接到表单的任何模型。对我来说,你的验证没有被触发似乎很正常,但我认为这绝对是个坏主意。我将把我的两个表单合并为一个表单,并创建多个提交按钮。@Mcsky:在if($form1)中,我将创建一些数据,根据form1的结果插入到form2中……是的,这看起来非常复杂,您可以考虑使用它来配置表单的提交数据功能
$form1 = $this
    ->get('form.factory')
    ->createNamed('my_name', TextType::class, $task);