我的Yii urlManager有问题。我正在使用路径格式,并希望传递多个get变量。网址看起来像这样:
/Yii/app/de/user/admin/id/5/test/hello
我的.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参数工作。
答案 0 :(得分:3)
保留官方指南URL Management - Using named parameters作为参考。
您应该编写自定义规则,例如:
'<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'
要记住的最后一件事:检查 始终 规则优先顺序。
答案 1 :(得分:1)
您应该只是尝试添加此网址规则:
'<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-parameter-binding
答案 2 :(得分:0)
这是解决方案,你可以像这样使用uri组件; YII ::应用程序() - &GT; URI-&GT;段(2);
有关详情,请参阅网址
http://www.hasandemir.com/how-to-get-contoller-action-segments-like-codeigniter/