我这样配置我的主要路线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
将是有效的网址,因此不是一个很好的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句