46 votes

Comment rendre l'entrée CSRF dans twig?

Je sais qu'il existe le moyen habituel de rendre l'entrée cachée du jeton CSRF avec form_rest , mais existe-t-il un moyen de rendre uniquement l' entrée CSRF elle-même ? J'ai remplacé {% block field_widget %} dans le thème pour afficher un texte supplémentaire. Mais comme le jeton CSRF est également rendu dans le champ de saisie et que j'ai un morceau de texte dont je n'ai pas besoin à côté d'un champ masqué. J'aimerais donc le rendre séparément avec un argument qui lui dit de ne pas rendre ce texte.

101voto

Henrik Bjørnskov Points 821

vous pouvez le faire avec {{ form_widget(formView._token) }}

55voto

Yury Pliashkou Points 791

Si vous avez un objet formView , vous pouvez le rendre à l'aide de la fonction Twig :

 {{ form_widget(formView._token) }} 

Si ce n'est pas le cas, vous pouvez rendre le jeton sans utiliser directement l'objet de formulaire :

 <input type="hidden" name="token" value="{{ csrf_token('some-name') }}">

Fonctionne sous Symfony 2.x et 3.x

Pour valider le token, vous pouvez utiliser le code suivant dans votre contrôleur (Symfony 3.x) :

 $submittedToken = $request->request->get('token');

if ($this->isCsrfTokenValid('some-name', $submittedToken)) {
    // ... do something,
}

21voto

Anass Points 327

Ou vous pouvez simplement utiliser ceci :

 {{ form_row(form._token) }}

Cela générera automatiquement les éléments HTML cachés appropriés, c'est-à-dire la structure HTML et les noms de champs appropriés, selon le type de formulaire que vous utilisez.

1voto

Vladimir Ch Points 146

n'a pas trouvé de solution a fonctionné pour moi, trouvé et testé et a fonctionné pour mon Simfony3 value="{{ _token }}" dans l'exemple

      <form name="form" method="post" action="{{ path('blog_show', { 'id': blog.id }) }}">
       <input name="_method" value="DELETE" type="hidden">
       <input class="btn btn-danger" value="Delete" type="submit">
       <input id="form__token" name="form[_token]" value="{{ _token }}" type="hidden">
    </form>

plus d'informations sur scrf peuvent être consultées ici : Créer des formulaires manuellement dans Symfony2, mais toujours utiliser son CSRF et isValid() de manière fonctionnelle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X