在yii中有一种方法可以使参数无限制
例如,我有模块/管理员/
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'caseSensitive'=>false,
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/',
'admin///' => 'admin//',
'admin//'=>'admin//',
),
),
在管理模块中,我需要每个动作都有无限的参数,例如:
/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
我应该在规则上逐一定义吗?或者有捷径可以做到这一点?
以及如何在控制器动作上捕获它?
解决方法:
有一个捷径:
'admin///*'=>'admin//'
即用/ *附加规则
由于这是一个更普遍的规则,它可以捕获很多网址,最好将它放在底部,或者至少在任何特定规则之后,即:
// ... other specific rules ...
'//'=>'/', // specifically for id
// ... other specific rules ...
'admin///*'=>'admin//'
对于你的情况:
'/'=>'/view',
'//'=>'/',
'/'=>'/',
'admin///' => 'admin//',
'admin//'=>'admin//',
'admin///*'=>'admin//'
要在操作中捕获它,只需不要为操作指定任何参数,如下所示:
public function actionSomething() {
// instead use $_GET
$params=$_GET;
}
但它也应该与你已经拥有的定义一起使用:public function actionAnyAction($id = 0,$type =”,$type2 =”)
标签:php,yii
来源: https://codeday.me/bug/20190901/1781779.html