【问题标题】:Adding attributes to the path request with twig in symfony2在 symfony2 中使用 twig 向路径请求添加属性
【发布时间】:2012-09-12 20:27:19
【问题描述】:

我一直在用谷歌搜索这个问题,但我找不到任何有同样问题的人...而且我不认为我是这里唯一的人>.

让我们看看,我在 symfony2 中使用翻译。我需要用树枝来做这个...... 问题是我需要 3 个链接,以便人们可以更改网站的语言。该链接必须重定向到用户所在的同一页面,但要更改“_locale”。

我首先想到的是这样的:

// in routing.yml
bundleStuff_someUrl:
    pattern:  /{_locale}/aloha
    defaults: { _controller: bundleStuff:Aloha:foo }

bundleStuff_fooUrl:
    pattern:  /{_locale}/foo/{fooParam}
    defaults: { _controller: bundleStuff:Foo:foo }

// in view.html.twig
<a href="{{ path((app.request.get('_route'), { '_locale': 'l1' }) }}">lang1</a>
<a href="{{ path((app.request.get('_route'), { '_locale': 'l2' }) }}">lang2</a>
<a href="{{ path((app.request.get('_route'), { '_locale': 'l3' }) }}">lang3</a>

当(在这种情况下)_route 是 fooUrl 时,问题就变成了......有没有办法将我在当前视图中的每个属性都附加到我正在寻找的路径中? 换句话说,参考这个例子:如果当前视图是'fooUrl',有没有办法让twig知道它必须将'fooParam'添加到路径中?

提前致谢! 希望这篇文章有用! :D

【问题讨论】:

    标签: symfony twig routes


    【解决方案1】:

    _route_params请求属性保存当前路由的参数。所以树枝代码是,

    {% set route = app.request.get('_route') %}
    {% set route_params = app.request.get('_route_params') %}
    
    <a href="{{ path(route, route_params | merge({ '_locale': 'l1' })) }}">lang1</a>
    <a href="{{ path(route, route_params | merge({ '_locale': 'l2' })) }}">lang2</a>
    <a href="{{ path(route, route_params | merge({ '_locale': 'l3' })) }}">lang3</a>
    

    【讨论】:

    • 请注意,这个 _route_params 属性仅在 Symfony 2.1 中可用。如果您使用 2.0,则可以使用此处所述的自定义树枝扩展:htmlpurifier.org/docs/enduser-utf8.html
    • 对不起,错误的网址。右边是stackoverflow.com/questions/9378714/…
    • 呃!感谢你们俩! :D 我会在家里试试这个,然后告诉你什么。非常感谢!
    • 好的,因为我使用的是 2.0(或 2.1 beta,不确定 xD),所以我不得不进行 twig 扩展。我让它运行了:D
    【解决方案2】:

    对于 symfony 2.0,你可以在控制器中获取 _locale 变量并在发送变量之后。

    例如

    控制器:

        $language = $this->getRequest()->get('_locale'); 
        $this->$this->redirect($this->generateUrl('bundleStuff_someUrl', array('language' => $language)))
    

    在routing.yml之后

    bundleStuff_someUrl: 模式:/{语言}/aloha 默认值:{ _controller: bundleStuff:Aloha:foo }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2012-05-24
      • 2013-12-31
      • 2020-04-08
      • 2012-05-10
      • 2019-04-30
      • 1970-01-01
      相关资源
      最近更新 更多