我創造的Symfony語言切換,使用下面的代碼:創建具有區域設置的URL在枝杈
<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
但如果我去同一個頁面,而無需指定的語言環境,http://localhost:8000/app_dev.php/about
不正確的鏈接都在option
這樣創建:/app_dev.php/about?_locale=it
和/app_dev.php/about?_locale=en
的關於我的控制器的動作看起來像這樣:
/**
* @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');
}
我該如何解決這個問題?
我認爲你必須刪除第二條路線或添加默認語言環境。 – malcolm
@malcolm如果我刪除了第二條路徑,那麼轉到/app_dev.php/about將導致404錯誤。同時向它添加默認語言環境,沒有幫助... – user6368518
因此,添加缺省語言環境和要求,只需複製路由以上並更改名稱。 – malcolm