【问题标题】:Symfony 4 change default form nameSymfony 4 更改默认表单名称
【发布时间】:2019-11-08 09:26:17
【问题描述】:

我创建了 2 个未链接到同一控制器中的任何实体的表单。 每个表单都有它自己的提交按钮。 我从不使用第二种形式的提交功能。 我认为这是因为这 2 个表单具有相同的默认名称“表单”。 问题是如何更改表单名称? 低于我所做的

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(),
    ]);
}

【问题讨论】:

  • 您是否在浏览器中查看了生成的 html 以了解发生了什么?发布到同一个 url 的两个表单有点不寻常。您可以让它们发布到不同的控制器操作。
  • 你在 if ($form1) 里面做什么?你会回复吗?顺便说一句,您没有向表单添加任何约束,也没有任何模型链接到它。在我看来,您的验证没有被触发是正常的
  • 是的,我认为这绝对是个坏主意。我会将我的 2 个表单合并为一个并创建多个提交按钮。
  • @Mcsky:在 if($form1) 中,我将根据 form1 的结果创建一些数据以插入到 form2 中...
  • 是的,这看起来很复杂,您可以考虑使用form event listener 来配置您的表单以实现提交数据的功能

标签: php forms symfony symfony4


【解决方案1】:

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

$form1 = $this
    ->get('form.factory')
    ->createNamed('my_name', TextType::class, $task);

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

【讨论】:

  • 我做到了,但似乎我遇到的问题与表单名称不同。提交后还是没有进入form2验证
  • 您不能同时发送两个表格。如果你需要这个,......我认为你需要一个包含两者的主表单,或者只是另一个旨在保存两个不同事物的表单。或者类似的东西。
猜你喜欢
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多