如何呈现树枝中的CSRFinput?
我知道有通常的方式来渲染CSRF标记隐藏inputform_rest
,但有没有办法只呈现CSRFinput本身? 我已经覆盖主题中的{% block field_widget %}
来渲染一段附加文本。 但是,由于CSRF标记也在input字段中呈现,并且我得到了一段文本,因此不需要在隐藏字段旁边。 所以我想单独渲染一个参数,告诉它不要渲染这个文本。
你可以用{{ form_widget(formView._token) }}
不使用表单对象,你可以直接渲染令牌:
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
“身份validation”是您的表单名称。
在Symfony 2.x和3.x中工作
或者你可以简单地使用这个:
{{ form_row(form._token) }}
这将根据您使用的表单types自动生成正确的隐藏HTML元素,即正确的HTML结构和字段名称。
我需要在Twig中渲染csrfinput,这样我才能将它用于删除操作。 使用{{ csrf_token('authenticate') }}
根据@ YuryPliashkou的答案给我不正确的标记(一个只对login有效!)
对我来说有效的是{{ 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 } });
validation了它在Symfony 3.x上的工作。
参考
没有find解决scheme为我工作,发现和testing,并为我的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中手动创build表单,但仍然使用CSRF和isValid()函数