簡體   English   中英

Symfony 2 CSRF驗證令牌

[英]Symfony 2 csrf validation token

我想刪除廣告而不轉到/ 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>

deleteAction():

            $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令牌無效。 請嘗試重新提交表格

我要感謝我的朋友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) }}

問題解決了 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM