php - Symfony FOSUserBundle - 在布局模板中包含登录表单

标签 php symfony1 twig

我们已经成功配置了 FOSUserBundle;登录、注册、重置密码等,一切正常。

现在我们要将登录表单合并到我们的一般站点布局中,特别是将表单放置在布局标题的右上部分。如果我们只处理用户名和密码字段,这样做就很容易了。但是我们似乎无法弄清楚如何获取由 FOSUserBundle 服务生成的 CSRF token :

$this->container->get('form.csrf_provider')->generateCsrfToken('authenticate');

我尝试在 Twig 扩展中调用上面的方法,否则工作正常,但显然扩展无法正确引用容器。

肯定有一些简单的方法可以在全局范围内获取 FOSUserBundle CSRF token 吗?

谢谢! 杰森

最佳答案

Symfony 2.3:

一种可能的解决方案是将 csrf 提供程序定义为 Twig 全局变量,如下所示:

twig:
    globals:
        fos_csrf_provider: "@form.csrf_provider"

然后在你的布局中这样调用它:

<input type="hidden" name="_csrf_token" value="{{ fos_csrf_provider.generateCsrfToken('authenticate') }}" />

所以你不需要调用任何 Controller 。

Symfony 2.4 及更高版本:

twig:
    globals:
        fos_csrf_provider: "@security.csrf.token_manager"

和:

<input type="hidden" name="_csrf_token" value="{{ fos_csrf_provider.refreshToken('authenticate') }}" />

关于php - Symfony FOSUserBundle - 在布局模板中包含登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903114/

相关文章:

routes - 将路由与 Symfony 中的当前请求进行比较

php - Twig - 为对象使用变量键

php - 如何在 Twig 模板中显示包含 HTML 的字符串?

javascript - 将 asset twig 函数与 js 变量连接

php - PDO 对象 :could not find driver

php - Paypal 真正的一键加售

php - 交响乐 : email address as request parameter

php - MySQL 空间表中两点之间的精确距离(以 KM 为单位)

php - 限制两列之和的结果

php - Symfony 插件开发