我是 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 的其余部分一起工作?
一只名叫tom的猫