urlManager规则不适用于模块Yii2

时间:2016-05-27 12:24:17

标签: yii2 yii-url-manager

我正在尝试在Yii 2中制作一些网址规则,以便我可以从控制器访问这样的操作:

controller/action/1 -> controller/action (with a parameter)

我尝试了一些规则,但它们不适用于我的模块(www.example.com/midend,www.example.com/backend)。

因此,如果我想访问www.example.com/controller/action/1,它的工作正常,但如果我想访问www.example.com/midend/controller/action/1则会返回404。

这些是模块的规则:

'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\w+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<id:\w+>' => '<module>/<controller>',

这些是没有模块的规则:

'<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<controller:\w+>/<id:\w+>' => '<controller>',

我已尝试将<module:\w+>替换为midend

1 个答案:

答案 0 :(得分:1)

假设你的id是整数,你应该简单地用这个替换你的规则:

'<controller>/<action>/<id:\d+>' => '<controller>/<action>',

它适用于:

  • www.example.com/controller
  • www.example.com/controller/action
  • www.example.com/controller/action/1
  • www.example.com/module(假设您有默认控制器)
  • www.example.com/module/controller
  • www.example.com/module/controller/action
  • www.example.com/module/controller/action/1