Подтвердить что ты не робот

Как визуализировать вход CSRF в веточке?

Я знаю, что обычный способ отображать скрытый ввод токена CSRF с помощью form_rest, но есть ли способ сделать сам только? Я переопределил {% block field_widget %} в теме, чтобы сделать часть дополнительного текста. Но поскольку токен CSRF также отображается в поле ввода, и я получил фрагмент текста, который мне не нужен рядом со скрытым полем. Поэтому я хотел бы сделать его отдельно с аргументом, который говорит ему, чтобы он не отображал этот текст.

4b9b3361

Ответ 1

вы можете сделать это с помощью {{ form_widget(formView._token) }}

Ответ 2

Без использования объекта формы вы можете напрямую перенести маркер:

<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">

где 'authenticate' - ваше имя формы.

Работает в Symfony 2.x и 3.x

Ответ 3

Или вы можете просто использовать это:

{{ form_row(form._token) }}

Это автоматически генерирует надлежащие скрытые элементы HTML, то есть правильную структуру HTML и имена полей, в зависимости от типа формы, которую вы используете.

Ответ 4

Мне нужно было сделать вход csrf внутри Twig, чтобы я мог использовать его для операций Удалить. Использование {{ csrf_token('authenticate') }} в соответствии с ответом @YuryPliashkou дает мне неправильный токен (тот, который действителен только для логинов!)

Что сработало для меня, это {{ csrf_token('form') }}, который дает мне правильный токен csrf, который я передал бы затем контроллеру через ajax.

<span id="csrf_token" data-token="{{ csrf_token('form') }}"></span> 
// my ajax call
$.ajax({
    url: localhost/admin/product/4545,   // 4545->id of the item to be deleted
    type: 'POST',
    data: {
        "_method": "DELETE",
        "form[_token]": $("#csrf_token").data("token")   // passed csrf token here
    },
    success: function(result) {
        // Do something 
   }
});

Подтвердил свою работу над Symfony 3.x.

Ссылка

Ответ 5

не нашел, что решение работало для меня, было найдено и протестировано и работало для моего значения Simfony3 = "{{_token}}" в примере

     <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>

подробнее о scrf можно посмотреть здесь: Создание форм вручную в Symfony2, но по-прежнему использовать его CSRF и isValid() функционально