Roe*_*oel 4 php url-routing yii2
我一直在环顾四周,但没找到我需要的东西.基本上,我有一些只有DefaultController的小模块和一些带有多个控制器的大模块.我对小模块的规则工作正常,但大模块的规则不会.这是我的规则:
'<module:\w+>/<action:\w+>' => '<module>/default/<action>',
'<module:\w+>/<action:\w+>/<id:\d+>' => '<module>/default/<action>',
'<module:\w+>/<controller:\w+>' => '<module>/<controller>/index',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>'
Run Code Online (Sandbox Code Playgroud)
前两个规则工作正常,允许我访问:
http://host/news/create和路由到news/default/create.
最后两个应该做到以下几点:
http://host/posts/category它应该途径posts/category/index
和
http://host/posts/category/create其应路线posts/category/create
可悲的是,它们似乎不起作用.有什么建议?
看起来第一条规则将捕获任何也可以匹配第三条规则的请求.
从代表正则表达式的角度来考虑它w+/w+:作为Yii中路由的通用规则,更多的规范性规则应该是最重要的,而不那么通用的,全能规则应该在底部.
现在获得所需要的最好方法是做一些事情:
'<module:news>/<action:\w+>' => '<module>/default/<action>',
'<module:news>/<action:\w+>/<id:\d+>' => '<module>/default/<action>',
'<module:posts>/<controller:\w+>' => '<module>/<controller>/index',
'<module:posts>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>'
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以清晰,直接地明确表达每个模块的路径,这也将为您提供长期的帮助.