繁体   English   中英

:: base.html.twig中不存在变量“ csrf_token”

[英]Variable “csrf_token” does not exist in ::base.html.twig

Symfony2和FOS用户捆绑包问题...

我已经在页面顶部实现了自己的登录表单(按照http://forum.symfony-project.org/viewtopic.php?f=31&t=37767中的说明使用FOS用户捆绑包。)

现在,我收到错误消息

Variable "csrf_token" does not exist in ::base.html.twig

该论坛上的其他人(上面的网址)存在完全相同的问题,并通过像这样隐藏的csrf字段来解决它

<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

我的问题虽然是:在/ login路径上运行时很好,但是我的全部要点是不需要单独的登录页面,我希望我的表单始终集成在页面头中,并且看来{{csrf_token}}仅当登录控制器呈现页面时可用...

另外,如何获得错误消息(闪烁),我假设必须以某种方式在我的defaultController中包含登录控制器,才能每次获得所有这些变量,或者...? 还是应该在标题的该部分中呈现userBundle控制器,而不是将某些userBundle模板粘贴到我的头上?

如果使用Form组件创建自己的登录表单,则应该已经有一个csrf令牌作为隐藏字段。 之所以说csrf_token变量仅适用于/登录是因为默认FOSUserBundle登录控制器不使用的一种形式,而不是他们只是象征手动生成一个CSRF所看到这里 ,并把它传递给视图。

因此,请确保您使用{{ form_rest(form) }}类的东西来呈现表单上所有隐藏的字段,或者像FOSUserBundle一样在此处手动生成一个csrf_token并用您已有的代码呈现它。

要从您的控制器内部生成一个有效的csrf控制器,请参阅上一篇文章

这个示例使我可以解决您遇到的问题。 让它作为扩展FOS用户捆绑包表格的其他任何人的参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM