【问题标题】:Symfony 2 csrf validation tokenSymfony 2 csrf 验证令牌
【发布时间】:2018-05-10 19:27:12
【问题描述】:

我想在不转到 /delete/{id} 路径的情况下删除广告,而只需使用模态弹出窗口进行删除。 在开发环境中,没问题,我的表单验证效果很好:

form.html.twig:

<div class="well">
{# form_start(form, {'attr': {'class': ''}}) #}
<form name="monext_perfclientbundle_advert" method="post" action="" class="" enctype="multipart/form-data">

{# Les erreurs générales du formulaire. #}
{{ form_errors(form) }}

<div class="form-group">
    {# Génération du label. #}
    {{ form_label(form.title, "Titre de l'annonce", {'label_attr': {'class': 'col-sm-3 control-label'}}) }}

    {# Affichage des erreurs pour ce champ précis. #}
    {{ form_errors(form.title) }}

    <div class="col-sm-4">
        {# Génération de l'input. #}
        {{ form_widget(form.title, {'attr': {'class': 'form-control'}}) }}
    </div>
</div>

<div class="form-group">
    {{ form_label(form.content, "Contenu de l'annonce", {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
    {{ form_errors(form.content) }}
    <div class="col-sm-4">
        {{ form_widget(form.content, {'attr': {'class': 'ckeditor'}}) }}
    </div>
</div>

{{ form_row(form.category) }}

    <button id="addFile">Ajouter un fichier</button>
    <div id="uploads"></div><br>

{{ form_widget(form.save, {'attr': {'class': 'btn btn-primary'}}) }}

{{ form_rest(form) }}

{{ form_end(form) }}

</form>

info.html.twig:

 <div class="modal-footer parente">
    <div><a href="#" class="btn" data-dismiss="modal">Annuler</a></div>
  <div>
  <form class="nomargin" action="{{ path('info_delete', {'id': advert.id}) }}" method="post">
    <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
   <input type="submit" value="Supprimer" class="btn btn-danger"/>{{ form_rest(form) }}                                                                           
 </form>
  </div>
</div>

删除操作():

            $form = $this->createFormBuilder()->getForm();
        if ($form->handleRequest($request)->isValid()) {
            $em->remove($advert);
            $em->flush();

            $request->getSession()->getFlashBag()->add('info', "L'annonce a bien été supprimée.");
            return $this->redirect($this->generateUrl('info'));
        }

        return $this->render('MonextPerfclientBundle:Default:delete.html.twig', array(
            'advert' => $advert,
            'form'   => $form->createView()
        ));

它在生产环境中不起作用我不知道为什么.. 我的转储: CSRF 令牌无效。请尝试重新提交表单

【问题讨论】:

  • 你清除你的产品缓存了吗?
  • 当然老兄:)

标签: forms symfony token csrf


【解决方案1】:

感谢我的朋友 Luax!

  {{ form_start(form, {'action': path('info_delete', {'id': advert.id})}) }}
     <input type="hidden" name="form[_token]" value="{{ csrf_token('form') }}">
     <input type="submit" value="Supprimer" class="btn btn-danger"/>{{ form_rest(form) }}
   {{ form_end(form) }}

问题已解决:)

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 2016-01-08
    • 2014-07-12
    • 2017-12-14
    • 2019-03-22
    • 2013-04-12
    • 2012-12-08
    • 2014-08-17
    相关资源
    最近更新 更多