gpt4 book ai didi

php - Yii urlManager 无限参数

转载 作者:可可西里 更新时间:2023-11-01 00:47:25 26 4
gpt4 key购买 nike

yii有没有办法让参数不受限制

例如,我有模块/admin/

'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'caseSensitive'=>false,
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>/<id:\d+>' => 'admin/<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>'=>'admin/<controller>/<action>',
),
),

在管理模块中,我需要每个 Action 都可以有无限的参数,例如:

 /admin/anycontroller/anyaction/anything
/admin/anycontroller/anyaction/anything/anything2
/admin/anycontroller/anyaction/anything/anything2/anything3
/admin/anycontroller/anyaction/anything/anything2/anything3/anything4
... and so on

我应该在规则上一一定义吗?还是有捷径可以做到这一点?

以及如何在 Controller 操作中捕获它?

最佳答案

有个捷径:

'admin/<controller:\w+>/<action:\w+>/*'=>'admin/<controller>/<action>'

即在规则后附加 /*

因为这是一个更通用的规则,可以捕获很多 url,所以最好将它放在底部,或者至少在任何特定规则之后,即:

// ... other specific rules ...
'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>', // specifically for id
// ... other specific rules ...
'admin/<controller:\w+>/<action:\w+>/*'=>'admin/<controller>/<action>'

针对您的情况:

'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>/<id:\d+>' => 'admin/<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>'=>'admin/<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>/*'=>'admin/<controller>/<action>'

要在 Action 中捕捉它,只需不要为 Action 指定任何参数,如下所示:

public function actionSomething() {
// instead use $_GET
$params=$_GET;

}

但它也应该适用于您已有的定义:public function actionAnyAction($id=0,$type='',$type2='')

关于php - Yii urlManager 无限参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com