Symfony 表单不提交数据 - POST 请求为空

我是 symfony 和 twig 模板的新手,我正在努力解决使用 Symfony 中的 formbuilder 创建的表单提交数据的问题。单击“创建”按钮不会提交数据。我创建了一个模板 addEmployee.html.twig,它使用导航栏和侧边栏扩展基本模板。


我注意到这种形式只有在我不扩展基础时才有效。因此,仅当创建表单的模板没有任何父模板时,它才会创建正确的请求并提交表单。


我不知道为什么扩展 base.html.twig 模板会导致请求丢失,我也不知道如何让它与我已经构建的扩展模板一起工作。


MainController.php 中的 newEmployee 函数


  /**

     * @Route("/employee/add", name="add_employee")

     * @Method({"GET","POST"})

     */

    public function newEmployee(Request $request){



      $employee = new Employee();


      $form = $this->createFormBuilder($employee)

          ->setMethod('POST')

          ->add('employeeNumber',TextType::class, array('attr' => array('class'=>'form-control')))

          ->add('name',TextType::class, array('attr' => array('class'=>'form-control')))

          ->add('phone',TextType::class, array('attr' => array('class'=>'form-control')))

          ->add('pool',TextType::class, array('attr' => array('class'=>'form-control')))

          ->add('save',SubmitType::class, array('label'=>'Create','attr'=>array('class'=> 'btn btn-primary mt-3')))

          ->getForm();


          if ($request->isMethod('POST')) {

            $form->submit($request->request->get($form->getName()));

          }



      if($form->isSubmitted() && $form->isValid()){


          $employee=$form->getData();


          $entityManager= $this->getDoctrine()->getManager();

          $entityManager->persist($employee);

          $entityManager->flush();


          return $this->redirectToRoute('homepage');

      }


          return $this->render('/Employee/addEmployee.html.twig',array('form'=>$form->createView()));


  }

addEmployee.html.twig'


{% extends 'base.html.twig' %}


{% block title%} New Article{% endblock %}


{% block body%}


{{form_start(form)}}

{{form_widget(form)}}

{{form_end(form)}}


{% endblock %}


base.html.twig

{% extends 'base.html.twig' %}从 addEmployee.html.twig' 表单中删除后按预期工作。任何想法如何让它与 ui 的其余部分一起工作?


MM们
浏览 147回答 1
1回答

一只名叫tom的猫

我自己找到了原因和解决方案,我感到很尴尬......结果我在侧边栏中有另一个表单,它包含在基本模板中,我没有关闭<form>标签......所以它是这样的:inc/sidebar.html.twig&nbsp;<form class="employee-Finder">&nbsp; &nbsp; &nbsp; &nbsp;<input class="finder-input" type="text">&nbsp;<form> <!-- this was the cause -->因此,第一个表单中的提交按钮可能正在提交侧栏中默认具有 get 方法的按钮。关闭标签后一切正常。谢谢你的所有建议。
打开App,查看更多内容
随时随地看视频慕课网APP