【问题标题】:Symfony 2 : HWiOauthBundle : Overriding connect_success.html.twigSymfony 2:HWiOauthBundle:覆盖 connect_success.html.twig
【发布时间】:2015-03-18 18:55:44
【问题描述】:

我在我的 Symfony 2 项目中实现了 FOSUserBundle 和 HWIOauthBundle。基本上,一切正常,但我想定制一点。通常,我使用 HWIOauthBundle 的 connect 功能将 oauth 帐户连接到已与身份验证表单 (FOSUserBundle) 连接的用户。

如果成功,控制器操作 HWIOAuthBundle:Connect:connectService 会显示 twig 模板 connect_success.html.twig。此时,我想覆盖此模板并执行以下操作:

  1. 创建快讯
  2. 在我的主页上显示 Flash 消息

您可以使用 FOSUserBundle 轻松获得此行为,因为此捆绑包调度许多事件以挂钩到控制器。但是使用 HWIOauthBundle 这是不可能的。

我的解决方案如下:

1/ 我使用以下代码将同名文件放在 app/Ressources/HWIOauthBundle/views/Connect 中,从而覆盖 connect_success.html.twig:

{{ render(controller('MyUserBundle:User:HWIOAuthFlash')) }}

2/ 在我的用户控制器 (MyUserBundle:User) 中,我创建了一个动作 HWIOAuthFlashAction(),它定义了一条闪现消息并转发到显示他的控制器动作主页(MyMainBundle:Main:homepage)

    public function HWIOAuthFlashAction()
    {
    // Here : flash message definition

    return $this->forward('MyMainBundle:Main:homepage');
   }

此时主页会显示闪烁消息。但我不得不删除主页模板 (homepage.twig.html) 中允许用户在两​​个语言环境之间切换的两个链接。

以下代码是我必须从模板中删除的代码:

    <ul>
    <li><a href="{{ path( app.request.get('_route'), app.request.get( '_route_params')|merge({'_locale': 'fr'} )) }}">FR</a></li>
    <li><a href="{{ path( app.request.get('_route'), app.request.get( '_route_params')|merge({'_locale': 'en'} )) }}">EN</a></li>
    </ul>

我了解特殊变量 _route 为空。我收到以下消息:

在渲染模板期间引发了异常 ("渲染时出错 “xxxxx/web/app_dev.php/connect/service/google?key=yyyyyyy”(状态 代码是 500).") 在 HWIOAuthBundle:Connect:connect_success.html.twig 中 第 3 行。

我有两个问题:

  1. 实现我的目标,是不是好办法?
  2. 如何对 symfony 说我希望我的路由成为 主页?

【问题讨论】:

  • 我想我可以测试一下 _route 是否为空。在这种情况下,我强制路由为 homepage。待试。

标签: symfony fosuserbundle hwioauthbundle


【解决方案1】:

正如我在评论中提出的,这是我的解决方案:

在我的主页模板中homepage.twig.html:

{% set route = app.request.get('_route') ? app.request.get('_route') : 'homepage' %}

      <ul>
        <li><a href="{{ path(route, app.request.get( '_route_params')|merge({'_locale': 'fr'} )) }}">FR</a></li>
        <li><a href="{{ path(route, app.request.get( '_route_params')|merge({'_locale': 'en'} )) }}">EN</a></li>
      </ul> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多