【发布时间】:2020-12-09 03:19:03
【问题描述】:
我的urlManager中有以下规则:
<?php
$uuidV4Pattern = '[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}';
$config = [
...
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'/' => 'site/index',
'<action:[a-zA-Z_]+>' => 'site/<action>',
'<controller:\w+>/<id:' . $uuidV4Pattern. '>'=>'<controller>/view',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:[a-zA-Z_]+>/<id:' . $uuidV4Pattern. '>'=>'<controller>/<action>',
'<controller:\w+>/<action:[a-zA-Z_]+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:[a-zA-Z_]+>'=>'<controller>/<action>',
'<module:\w+>/<controller:\w+>/<id:' . $uuidV4Pattern. '>'=>'<module>/<controller>/view',
'<module:\w+>/<controller:\w+>/<id:\d+>'=>'<module>/<controller>/view',
'<module:\w+>/<controller:\w+>/<action:[a-zA-Z_]+>/<id:' . $uuidV4Pattern. '>'=>'<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:[a-zA-Z_]+>/<id:\d+>'=>'<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:[a-zA-Z_]+>'=>'<module>/<controller>/<action>',
]
]
],
...
];
但我希望在访问我的模块的操作时按以下方式进行操作:
https://example.com/mymodule
https://example.com/mymodule/action
https://example.com/mymodule/controller/action
代替:
https://example.com/mymodule/default/index
https://example.com/mymodule/default/action
https://example.com/mymodule/controller/action
我将这两条规则插入如下:
'rules' => [
'/' => 'site/index',
'<action:[a-zA-Z_]+>' => 'site/<action>',
'<controller:\w+>/<id:' . $uuidV4Pattern. '>'=>'<controller>/view',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:[a-zA-Z_]+>/<id:' . $uuidV4Pattern. '>'=>'<controller>/<action>',
'<controller:\w+>/<action:[a-zA-Z_]+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:[a-zA-Z_]+>'=>'<controller>/<action>',
// New rules
'<module:\w+>/<action:\w+>/<id:(.*?)>' => '<module>/default/<action>/<id>',
'<module:\w+>/<action:\w+>' => '<module>/default/<action>',
'<module:\w+>/<controller:\w+>/<id:' . $uuidV4Pattern. '>'=>'<module>/<controller>/view',
'<module:\w+>/<controller:\w+>/<id:\d+>'=>'<module>/<controller>/view',
'<module:\w+>/<controller:\w+>/<action:[a-zA-Z_]+>/<id:' . $uuidV4Pattern. '>'=>'<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:[a-zA-Z_]+>/<id:\d+>'=>'<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:[a-zA-Z_]+>'=>'<module>/<controller>/<action>',
],
但不工作。我不知道我错过了什么,我会很感激他们给了我一些启发。
【问题讨论】:
标签: php regex yii2 yii2-urlmanager