[英]Set default locale with routing in Symfony 2
我在routing.yml
配置我的主要路線,如下所示:
geekhub_main:
resource: "@GeekhubMainBundle/Resources/config/routing.yml"
prefix: /{_locale}
defaults: { _locale: en }
requirements:
_locale: en|uk
如此處所述, Symfony2 docs ,但是當我去做一些沒有語言環境的頁面時,例如example.com/posts
而不是example.com/en/posts
我得到一個錯誤,提示No route found for ...
所以我做錯了什么?
這里有一個相關的文章stackoverflow ,但是我想defaults
方法比_locale: |en|uk
?
如您在文檔中所讀:
當然,您可以有多個可選的占位符(例如/ blog / {slug} / {page}),但是可選的占位符之后的所有內容都必須是可選的。 例如,/ {page} / blog是有效路徑,但是始終需要page(即,簡單地/ blog將不匹配此路由)。
如果您以_locale
作為前綴,則路由器將要求您始終添加它(即使您添加了默認值)。
如果使用前綴而不是前綴,則路由如下所示:
_test:
path: /test/{_locale}
defaults: { _controller: AcmeDemoBundle:Demo:contact, _locale: en }
requirements:
_locale: en|uk
/test
將起作用, /test/en
將起作用。
因此,我認為使用前綴,更好,更優雅的方法是定義多個模式:
_test:
path: /test
defaults: { _controller: AcmeDemoBundle:Demo:contact, _locale: en }
_test_:
path: /{_locale}/test
defaults: { _controller: AcmeDemoBundle:Demo:contact}
requirements:
_locale: en|uk
test
也可以/en/test
工作。
解決方案:
requirements:
_locale: |en|uk
由於//test
是有效的網址,因此不是一個好選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.