/en(?=/)demo/
regexp模式必须与/en/demo/
URI匹配,但在Symfony路由中不起作用。
路线的完整示例代码是:
demo:
pattern: /{_locale}demo/
defaults: { _controller: BWMainBundle:Demo:index }
requirements:
_locale: 'en(?=/)'
为什么在Symfony 2中regexp正面预测不起作用?
答案 0 :(得分:3)
Symfony不允许在需求中使用外观:https://github.com/symfony/symfony/issues/10548原因是只有“{_locale}”的部分与正则表达式匹配,而不是与其周围的所有内容匹配。
我也想知道为什么你会这样想?如果您需要可选的locale参数,则应创建2个路由并将它们绑定到同一个控制器:
demo_multilang:
pattern: /{_locale}/demo/
defaults: { _controller: BWMainBundle:Demo:index }
requirements:
_locale: 'en'
demo:
pattern: /demo/
defaults: { _controller: BWMainBundle:Demo:index, _locale: en }
requirements:
_locale: 'en'