JMSi18nRoutingBundle语言选择器

时间:2014-04-29 13:28:14

标签: symfony routing translation

我已实现以下语言切换器:

<ul id="language-selector">
    {% if path(app.request.attributes.get('_route')) == '/' %}
        <li><a href="{{ path("homepage", {"_locale": "es"}) }}">ES</a></li>
        <li><a href="{{ path("homepage", {"_locale": "en"}) }}">EN</a></li>
        <li><a href="{{ path("homepage", {"_locale": "it"}) }}">IT</a></li>
    {% else %}
        <li><a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'es'})) }}">ES</a></li>
        <li><a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}">EN</a></li>
        <li><a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'it'})) }}">IT</a></li>
    {% endif %}
</ul>

我使用JMSi18nRoutingBundle翻译网址。它工作正常,但当它呈现一个在url中有参数的视图时,会出现以下错误:

An exception has been thrown during the rendering of a template ("Some mandatory
parameters are missing ("id") to generate a URL for route
"es__RG__myapp_mybundle_myaction_edit".") in
MyAppMyBundle:Default:includes/myView.html.twig at line 21.

1 个答案:

答案 0 :(得分:3)

使用以下条件检查主页

  

{%if app.request.attributes.get('_ route')=='homepage'%}

而不是

  

{%if path(app.request.attributes.get('_ route'))=='/'%}

说明:

当您访问需要参数的URL时,if语句path(app.request.attributes.get('_route'))中的代码会生成错误。由于您的主页路由定义为 homepage ,因此仅检查_route属性就足以确定您是否正在访问主页。

快乐的编码!!