如何在twig中渲染CSRF输入?
我知道有一种使用 form_rest
渲染 CSRF 令牌隐藏输入的常用方法,但是有没有办法仅渲染 CSRF 输入本身?我已经覆盖了主题中的 {% block field_widget %}
以呈现一段附加文本。但由于 CSRF 令牌也在输入字段中呈现,并且我在隐藏字段旁边得到了一段不需要的文本。所以我想用一个参数单独渲染它,告诉它不要渲染此文本。
I know there's the usual way to render CSRF token hidden input with form_rest
, but is there a way to render just CSRF input itself? I've overridden {% block field_widget %}
in theme to render a piece of additional text. But as CSRF token is rendered in input field too and I got a piece of text I don't need next to a hidden field. So I'd like to render it separately with an argument that tells it not to render this text.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用
{{ form_widget(formView._token) }}
来完成you can do it with
{{ form_widget(formView._token) }}
如果你有
formView
对象,你可以使用 Twig 函数渲染它:如果你没有 - 你可以在不直接使用表单对象的情况下渲染令牌:
适用于 Symfony 2.x 和 3.x
验证令牌,您可以在控制器(Symfony 3.x)中使用以下代码:
If you have
formView
object, you can render it using Twig function:If you haven't - you can render token without using form object directly:
Works in Symfony 2.x and 3.x
To validate the token you can use the following code in your controller (Symfony 3.x):
或者您可以简单地使用它:
这将根据您使用的表单类型自动生成正确的隐藏 HTML 元素,即正确的 HTML 结构和字段名称。
Or you can just simply use this :
This will automatically generate the proper hidden HTML elements, ie the proper HTML structure and field names, according to the type of form you're using.
我需要在 Twig 中渲染 csrf 输入,以便可以将其用于删除操作。
根据 @YuryPliashkou 的答案使用
{{ csrf_token('authenticate') }}
给了我不正确的令牌(仅对登录有效!)对我有用的是这个
{{ csrf_token('form') }}
它为我提供了正确的 csrf 令牌,然后我将通过 ajax 将其传递给我的控制器。已验证其在 Symfony 3.x 上的工作。
参考
I needed to render the csrf input inside Twig so that I could use it for Delete operations.
Using
{{ csrf_token('authenticate') }}
as per @YuryPliashkou's answer gives me the incorrect token (one which is only valid for logins!)What worked for me was this
{{ csrf_token('form') }}
which gives me the correct csrf token which I would then pass to my controller via ajax.Verified its working on Symfony 3.x.
Reference
没有找到适合我的解决方案,在示例中找到并测试了并适用于我的 Simfony3 value="{{ _token }}"
有关 scrf 的更多信息可以在此处查看: 手动创建表单Symfony2,但仍然使用其 CSRF 和 isValid() 功能
didn't find solution worked for me, finded and tested and worked for my Simfony3 value="{{ _token }}" in example
more about scrf can be viewed here: Creating forms manually in Symfony2, but still use its CSRF and isValid() functionalily