Yii2 模块或控制器路由

问题描述

我尝试为模块和控制器使用路由

'<controller>'=>'<controller>/index','<controller>/<id:\d+>'=>'<controller>/view','<controller>/<action>'=>'<controller>/<action>','<module>' => '<module>/default/index','<module>/<id:\d+>' => '<module>/default/view','<module>/edit/<id:\d+>' => '<module>/default/edit','<module>/delete/<id:\d+>' => '<module>/default/delete','<module>/<action>' => '<module>/default/<action>','<module>/<controller>' => '<module>/<controller>/index','<module>/<controller>/edit/<id:\d+>' => '<module>/<controller>/edit','<module>/<controller>/delete/<id:\d+>' => '<module>/<controller>/delete','<module>/<controller>/<id:\d+>' => '<module>/<controller>/view','<module>/<controller>/<action>' => '<module>/<controller>/<action>',

但是由于某种原因,如果第一个匹配规则不起作用,那么其余的都不会检查,您会收到 404 错误。 例如,如果没有找到控制器,则得到404,检查未到达模块。

网址管理器配置

  'urlManager' => [
        'enablePrettyUrl' => true,'showScriptName' => false,'rules' => [
                'store/upload'=>'store/upload','stores'=>'store/index',//    'post/<id:\d+>'=>'post/view','comment/send'=>'comment/send',['class' => 'yii\rest\UrlRule','controller' => 'Api','prefix' => 'api'],'api/<id:\d+>'=>'api/view',[
                        'pattern' => 'users','route' => 'users/index','suffix' => '/','normalizer' => false,// отключаем нормализатор для этого правила
                ],//     '<controller>'=>'<controller>/index',//             '<controller>/<id:\d+>'=>'<controller>/view',//            '<controller>/<action>'=>'<controller>/<action>',],

请求网址 http://yii2/post 到 PostController/actionIndex()

解决方法

我修复了路由,它起作用了。首先检查控制器,然后检查模块。

 '<controller:\w+>'=>'<controller>/index','<controller:\w+>/<id:\d+>'=>'<controller>/view','<controller:\w+>/<action>'=>'<controller>/<action>','<module:\w+>' => '<module>/default/index','<module:\w+>/<id:\d+>' => '<module>/default/view','<module:\w+>/edit/<id:\d+>' => '<module>/default/edit','<module:\w+>/delete/<id:\d+>' => '<module>/default/delete','<module:\w+>/<action:\w+>' => '<module>/default/<action>','<module:\w+>/<controller:\w+>' => '<module>/<controller>/index','<module:\w+>/<controller:\w+>/edit/<id:\d+>' => '<module>/<controller>/edit','<module:\w+>/<controller:\w+>/delete/<id:\d+>' => '<module>/<controller>/delete','<module:\w+>/<controller:\w+>/<id:\d+>' => '<module>/<controller>/view','<module:\w+>/<controller:\w+>/<action>' => '<module>/<controller>/<action>',