我的Yii urlManager有问题。我使用的是路径格式,希望传递多个get变量。网址如下:
/Yii/app/de/user/admin/id/5/test/hello
my.htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /Yii/app/
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
我试过使用urlManager,但它不符合以下规则:
'rules' => array(
'<language:'w+>/<controller:'w+>/<id:'d+>'=>'<controller>/view',
'<language:'w+>/<controller:'w+>/<action:'w+>/<id:'d+>'=>'<controller>/<action>',
'<language:'w+>/<controller:'w+>/<action:'w+>'=>'<controller>/<action>',
)
$_GET应该是这样的:
array(3) {
["/de/user/admin"]=> string(0) ""
["id"]=> string(1) "5"
["test"]=> string(5) "hello"
["language"]=> string(2) "de"
}
有人能帮我吗?
编辑:
它必须适用于数量可变的get参数。
保留官方指南URL管理-使用命名参数作为参考。
您应该编写一个自定义规则,例如:
'<language:'w+>/<controller:'w+>/<action:'w+>/<id:'d+>/test/<test:'w+>'=>'<controller>/<action>'
特别是,如果您想要可变数量的参数,您应该将/*
附加到规则中,类似于以下内容:
'<language:'w+>/<controller:'w+>/<action:'w+>/<id:'d+>/*'=>'<controller>/<action>',
有了这样的规则,你就可以获得的URL
/de/user/admin/id/2/test2/hello/anotherparam/45/yap/thisothertoo
并将$_GET参数绑定为
'id' => 2
'test2' => 'hello'
'anotherparam' => 45
'yap' => 'thisothertoo'
最后要记住的是:检查始终规则优先级。
您只需尝试添加以下url规则:
'<language:'w+>/<controller:'w+>/<action:'w+>/<id:'d+>/test/<test:'w+>'=>'<controller>/<action>',
使用Yii,您实际上不需要使用$_GET
,您应该使用动作参数绑定功能:http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#action-参数绑定
这里是解决方案,您可以像这样使用uri组件;Yii::app()->uri->segment(2);
有关详细信息,请访问url
http://www.hasandemir.com/how-to-get-contoller-action-segments-like-codeigniter/