yii path url中的多个GET变量

时间:2013-12-06 14:30:58

标签: php .htaccess url yii

我的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参数工作。

3 个答案:

答案 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/