首页 > 解决方案 > Symfony 4 - 无法提交我的表单模式(路径错误)

问题描述

在我的项目 symfony 4 中,我有一个用于打开模式弹出窗口的按钮,它有一个表单,如下所示:

在此处输入图像描述

但问题是,当我提交表单时,我有这个错误:

找不到“POST /validation/%7B%7BdeleteLink%7D%7D”的路由(来自“ 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">&times;</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);
}

问题是否来自我在一个函数中声明我的表单,并且当我提交它时,我要求它指向另一个函数?我必须在同一个函数中做所有事情吗?

标签: phpformssymfonymodal-dialog

解决方案


错误在这里:

{{form_start(form, {'action': deleteLink})}}

deleteLink是一个变量,不需要用引号括起来。

我想我们应该把它关闭为 offtopic(.


推荐阅读