我是 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 方法的按钮。关闭标签后一切正常。谢谢你的所有建议。
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消