[英]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.