我正在尝试在模式中创建一个编辑表单,但此编辑表单在上下文中不起作用。
当我在使用URI地址的网页中尝试使用表单时,它正在工作,但当我在页面上下文中尝试它时,它不是。我要解释一下......
在我的网页上,我有render controller
:
<div class="card">
<div class="body">
{{ render(controller('AppBundle:Classeur3:vacation', {'request':app.request , 'id': zone.id})) }}
</div>
</div>
此控制器检索somme实体并显示如下表:
<table id="sites-list" class="table table-bordered datatable">
<thead>
<tr>
<th>Employé</th>
<th>Heure d'entrée</th>
<th>Heure de sortie</th>
<th>Durée</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for v in vacations %}
<tr id="tr-vacation-{{ v.id }}">
<td>{{ v.user }}</td>
<td>{{ v.entryTime|date }}</td>
<td>{{ v.exitTime|date }}</td>
<td>{{ v.totalTime }}</td>
<td style="width: 150px;">
<button onclick="$('#modal').modal({remote: '{{ path('edit_vacation', {'id': v.id}) }}' });" type="button" class="btn btn-circle waves-effect waves-circle waves-float" style="margin-right: 5px;">
<i class="material-icons">search</i>
</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
我的edit_vacation
资源是通过以下途径定义的:
edit_vacation:
path: /vacation/{id}/edit
defaults: { _controller: AppBundle:Classeur3:editVacation }
这是我的控制器功能:
public function editVacationAction(Request $request, $id){
$vacation = $this->getDoctrine()->getRepository(Answ31Vacation::class)->find($id);
$form = $this->createForm(Answ31VacationType::class, $vacation);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($vacation);
$entityManager->flush();
//Message
$this->addFlash('success', 'Vacation mise à jours');
//Redirect to Zone edit page
return $this->redirectToRoute('zone_edit', array('id' => $vacation->getZone()->getId()));
}
return $this->render('AppBundle:Classeur3:edit_vacation.html.twig', array(
"form" => $form->createView()
));
}
以下是我的观点:
<div class="modal-body">
<div class="row">
<div class="col-sm-12">
{{ form(form) }}
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-link waves-effect" data-dismiss="modal">Fermer</button>
</div>
完美显示模态,但是当我提交表单时,页面将按计划重新加载,但数据不会更新。 当我尝试直接在URL中调用我的资源(baseurl / vacation / 1 / edit)时,我有表格并且修改正常,当我按下提交按钮时数据会更新。
有什么想法吗?
答案 0 :(得分:1)
在editVacationAction
中,您应该尝试设置表单的目标操作,例如
$form = $this->createForm(Answ31VacationType::class, $vacation, ["action"=>$this->generateUrl('edit_vacation']);
但是当你提交时,页面会发生变化,如果没有额外的JavaScript,你将会松开模态。