Я новичок в шаблонах Symfony и Twig, и я борюсь с проблемой отправки данных с помощью формы, созданной formbuilder в Symfony. При нажатии кнопки «Создать» данные не отправляются. Я создал шаблон addEmployee.html.twig, который расширяет базовый шаблон с помощью панели навигации и боковой панели.
Я заметил, что эта форма работает, только если я не расширяю базу. Таким образом, она создаст правильный запрос и отправит форму только в том случае, если шаблон, в котором создается форма, не имеет родительского шаблона.
Я не знаю, почему расширение шаблона base.html.twig привело к потере запроса, и я не знаю, как заставить его работать с уже созданными шаблонами расширения.
Функция newEmployee из MainController.php
/**
* @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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}TL Manage{% endblock %}</title>
{% block stylesheets %}
<link rel="stylesheet" href="https://bootswatch.com/4/cosmo/bootstrap.min.css">
<link rel="stylesheet" href="../css/style.css">
{% endblock %}
</head>
<body>
{% include 'inc/navbar.html.twig' %}
{% include 'inc/sidebar.html.twig' %}
<div id="content">
{% block body %}{% endblock %}
</div>
{% block javascript %}
<!-- Icons.JS -->
<script src="https://unpkg.com/ionicons@4.5.5/dist/ionicons.js"></script>
<!-- JQUERY -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<!-- Popper.JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<!-- Bootstrap JS -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<!-- jQuery Custom Scroller CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="js/main.js"></script>
{% endblock %}
</body>
</html>
Вместо перенаправления на домашнюю страницу и вставки данных
это то, что происходит, если я отправляю форму
и после удаления {% extends 'base.html.twig' %}
из addEmployee.html.twig 'форма работает как задумано. Любые идеи, как заставить его работать с остальными частями пользовательского интерфейса?