yii路径url中有多个GET变量


Multiple GET-variables in yii path url

我的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/