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 }}" />
我的问题是:在/登录路径上工作正常,但我的全部观点是不需要单独的登录页面,我希望我的表单始终集成在页面头中,似乎{{csrf_token} }仅在登录控制器呈现页面时可用...
另外,我如何在那里得到错误消息(闪烁),我假设我必须以某种方式在我的defaultController中包含登录控制器,每次都用它来获取所有这些变量,或者......?或者我应该在标题的那一部分中呈现userBundle控制器,而不是将一些userBundle模板粘贴到我的头脑中?
答案 0 :(得分:6)
如果使用Form组件创建自己的登录表单,则应该已将csrf标记作为隐藏字段。 csrf_token
变量仅在/ login上可用的原因是因为默认的FOSUserBundle登录控制器不使用表单,而只是手动生成csrf令牌,如here所示,并将其传递给视图。
因此,要么确保使用类似{{ form_rest(form) }}
的内容渲染表单上的所有隐藏字段,要么手动生成csrf_token,就像FOSUserBundle here一样,并使用您已有的代码呈现它。
答案 1 :(得分:0)
要从控制器中生成有效的csrf控制器,请see a previous post。
这个例子让我解决了你遇到的问题。这是对其他任何扩展FOS用户包表单的人的引用。