为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MM们 2021-06-29 13:23:08
我是 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 的其余部分一起工作?
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

我自己找到了原因和解决方案,我感到很尴尬......


结果我在侧边栏中有另一个表单,它包含在基本模板中,我没有关闭<form>标签......所以它是这样的:


inc/sidebar.html.twig


 <form class="employee-Finder">

       <input class="finder-input" type="text">

 <form> <!-- this was the cause -->

因此,第一个表单中的提交按钮可能正在提交侧栏中默认具有 get 方法的按钮。关闭标签后一切正常。谢谢你的所有建议。


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信