繁体   English   中英

使用语言环境创建URL在Twig中不起作用

[英]Creating url with locale doesn't work in Twig

我正在使用以下代码在Symfony中创建语言切换器:

<select title="Change Language" onChange="window.location.href=this.value">
   <option value="{{ path(app.request.attributes.get('_route'), {'_locale':'en'}) }}" {% if  app.request.locale == 'en'  %} selected="selected" {% endif %}>English                                </option>
  <option value="{{ path(app.request.attributes.get('_route'), {'_locale':'it'}) }}" {% if  app.request.locale == 'it'  %} selected="selected" {% endif %}>Italiano                                </option>
</select>

当我访问http://localhost:8000/app_dev.php/en/about ,该option中的链接是正确的,即: /app_dev.php/en/about/app_dev.php/it/about但是如果我去到同一页面而不指定语言环境,在这样的option会创建http://localhost:8000/app_dev.php/about不正确的链接: /app_dev.php/about?_locale=en /app_dev.php/about?_locale=it/app_dev.php/about?_locale=en

我的控制器中的about操作如下所示:

 /**
 * @Route("/{_locale}/about", name="aboutUs", defaults={"_locale" = "en"}, requirements={"_locale" = "en|de|fr|es|it"})
 * @Route("/about")
 */

public  function aboutAction(){
    return $this->render('default/frontend/about.html.twig');
}

我该如何纠正?

首先,删除第二个@Route。

之后,安装https://github.com/schmittjoh/JMSI18nRoutingBundle使用此捆绑包,您可以根据需要执行系统URL。

下来,您有一个配置示例。

jms_i18n_routing:
    default_locale: en
    locales: [es, it, fr, pl, pt, en, de, ca]
    strategy: prefix_except_default

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM