2
兩個月前,我問,如何實現URI這裏與語言參數的路由:Locale in Routing, Default Language also without Parameter區域設置路由,不帶參數的默認語言
但現在,爲了避免重複的內容,我想有默認語言( en)不帶參數和其他語言。換句話說,我需要根據_locale參數定義路由前綴。
例
http://example.com/
http://example.com/de/
http://example.com/about/
http://example.com/de/about/
...
這裏是我的測試設置,這給了我下面的錯誤顯示:
的routing.yml:
_site_en:
resource: "@MyMainBundle/Controller/SiteController.php"
type: annotation
requirements: { _locale : en }
prefix:/
_site:
resource: "@MyMainBundle/Controller/SiteController.php"
type: annotation
requirements: { _locale : fr|es|it|de }
prefix: /{_locale}/
控制器批註
/**
* @Route("/", name="_site_startpage", defaults={"_locale" = "", "slug"="startpage"})
* @Route("/{slug}/", name="_site_site", defaults={"_locale"=""})
*
* @ParamConverter("page", class="MyMainBundle:Page")
*/
public function siteAction($slug, $_locale, Page $page)
如何以正確的方式做到這一點?
編輯: 作爲一個結果我得到一個例外,路徑的路徑沒有定義。
No route found for "GET /"
404 Not Found - NotFoundHttpException
1 linked Exception:
ResourceNotFoundException »
路由器:調試只顯示第2路線:
_site_startpage ANY /{_locale}/
_site_site ANY /{_locale}/{slug}/
編輯2: 我結束了使用JMSI18nRoutingBundle ...
「沒有工作」含糊不清。我認爲你的parameters.ini中已經定義了一個默認語言環境,不是嗎?所以也許你應該嘗試沒有默認和要求部分。 – greg0ire 2012-03-25 14:30:47
對不起,你是對的,我更新了這個問題。 – madc 2012-03-25 18:03:06
也許您的默認語言環境不是en不滿足要求。嘗試刪除它們以查看它仍然會得到一個404.還要運行路由器:調試任務,以查看是否考慮了您的路由。 – greg0ire 2012-03-25 18:22:57