Symfony 4 - 无法提交我的表单模式(路径错误)
Symfony 4 - Impossible to submit my form modal (error with path)
在我的 symfony 4 项目中,我有一个用于打开模态弹出窗口的按钮,它具有如下形式:
但问题是当我提交表格时,我有这个错误:
No route found for "POST /validation/%7B%7BdeleteLink%7D%7D" (from
"http://127.0.0.1:8000/validation/absences")
在我的控制器中,我有我的索引函数,它传递我的表单:
/**
* @Route("/validation/absences", name="validation_index")
*/
public function index(PaginatorInterface $paginator, Request $request, AbsenceService $absenceService)
{
$refusAbsence = new Absence();
$formRefus = $this->createForm(RefusAbsenceType::class, $refusAbsence);
$formRefus->handleRequest($request);
//.... render, etc
}
在我的 Twig 中,我这样显示我的表单:
{% import 'macro/macro.html.twig' as macro %}
{% block body %}
//...
<a class="btn btn-secondary ml-1" href="#" data-target="#refuserAbsenceModal{{demande.id}}" data-toggle="modal">
<i class="fas fa-times"></i>
</a>
{{ macro.create_form_modal(
'refuserAbsenceModal'~demande.id,
"Refuser l'absence ?",
formRefus,
path('validation_refuser',{'id': demande.id})
)
}}
在我的 macro.html.twig 中:
{%- macro create_form_modal(id, title, form, deleteLink) -%}
{% filter spaceless %}
<div id="{{ id }}" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
{{form_start(form, {'action': "{{deleteLink}}"})}}
<div class="modal-header">
<h4 class="modal-title">{{title}}</h4>
<button class="close" data-dismiss="modal" type="button">×</button>
</div>
<div class="modal-body">
{{form_widget(form)}}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Valider</button>
<button class="btn btn-secondary" data-dismiss="modal" type="button">Annuler</button>
</div>
{{form_end(form)}}
</div>
</div>
</div>
{% endfilter %}
{%- endmacro -%}
它必须调用我的控制器函数:
/**
* Refuser une demande d'absence
*
* @Route("validation/absences/refuser/{id}", name="validation_refuser")
* @Method({"POST"})
*
* @param Absence $absence
* @return void
*/
public function refuser(Absence $absence)
{
dd($absence);
}
问题是因为我在一个函数中声明了我的表单,并且当我提交它时,我要求它指向另一个函数吗?我是否必须在同一个函数中执行所有操作?
错误在这里:
{{form_start(form, {'action': deleteLink})}}
deleteLink
是一个变量,不需要用引号括起来。
我想我们应该将其关闭为离题(。
在我的 symfony 4 项目中,我有一个用于打开模态弹出窗口的按钮,它具有如下形式:
但问题是当我提交表格时,我有这个错误:
No route found for "POST /validation/%7B%7BdeleteLink%7D%7D" (from "http://127.0.0.1:8000/validation/absences")
在我的控制器中,我有我的索引函数,它传递我的表单:
/**
* @Route("/validation/absences", name="validation_index")
*/
public function index(PaginatorInterface $paginator, Request $request, AbsenceService $absenceService)
{
$refusAbsence = new Absence();
$formRefus = $this->createForm(RefusAbsenceType::class, $refusAbsence);
$formRefus->handleRequest($request);
//.... render, etc
}
在我的 Twig 中,我这样显示我的表单:
{% import 'macro/macro.html.twig' as macro %}
{% block body %}
//...
<a class="btn btn-secondary ml-1" href="#" data-target="#refuserAbsenceModal{{demande.id}}" data-toggle="modal">
<i class="fas fa-times"></i>
</a>
{{ macro.create_form_modal(
'refuserAbsenceModal'~demande.id,
"Refuser l'absence ?",
formRefus,
path('validation_refuser',{'id': demande.id})
)
}}
在我的 macro.html.twig 中:
{%- macro create_form_modal(id, title, form, deleteLink) -%}
{% filter spaceless %}
<div id="{{ id }}" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
{{form_start(form, {'action': "{{deleteLink}}"})}}
<div class="modal-header">
<h4 class="modal-title">{{title}}</h4>
<button class="close" data-dismiss="modal" type="button">×</button>
</div>
<div class="modal-body">
{{form_widget(form)}}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Valider</button>
<button class="btn btn-secondary" data-dismiss="modal" type="button">Annuler</button>
</div>
{{form_end(form)}}
</div>
</div>
</div>
{% endfilter %}
{%- endmacro -%}
它必须调用我的控制器函数:
/**
* Refuser une demande d'absence
*
* @Route("validation/absences/refuser/{id}", name="validation_refuser")
* @Method({"POST"})
*
* @param Absence $absence
* @return void
*/
public function refuser(Absence $absence)
{
dd($absence);
}
问题是因为我在一个函数中声明了我的表单,并且当我提交它时,我要求它指向另一个函数吗?我是否必须在同一个函数中执行所有操作?
错误在这里:
{{form_start(form, {'action': deleteLink})}}
deleteLink
是一个变量,不需要用引号括起来。
我想我们应该将其关闭为离题(。