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

Mat*_*der 1 php symfony fosuserbundle

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

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

现在,我有错误消息

Variable "csrf_token" does not exist in ::base.html.twig
Run Code Online (Sandbox Code Playgroud)

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

<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
Run Code Online (Sandbox Code Playgroud)

我的问题是:在/登录路径上工作正常,但我的要点是不需要单独的登录页面,我希望我的表单始终集成在页面头中,似乎只有{{csrf_token}}页面由登录控制器呈现时可用...

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

MDr*_*tte 6

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

所以,要么确保你渲染所有的隐藏字段的形式与类似{{ form_rest(form) }}或手动生成csrf_token像FOSUserBundle不会在这里和你已有的代码进行渲染.