【问题标题】:Yii UrlManager and multiple Get parametersYii UrlManager 和多个 Get 参数
【发布时间】:2013-12-24 01:55:35
【问题描述】:

我的 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" 
}

它必须适用于可变数量的获取参数。例如:

如果使用ajax按CGridView排序,参数个数不同。

谢谢

【问题讨论】:

    标签: php .htaccess url yii


    【解决方案1】:

    您不需要 url 管理器。

    您的变量将被传递给如下操作:

    www.yourdomain.com/yourController/yourAction?id=5&test=hello&language=de
    

    这是你的控制器中的动作函数

    public function yourAction($id, $test, $language){
      //$id is 5
      //$test is 'hello'
      //$language is 'de'
    }
    

    【讨论】:

    • 但是如果你想使用 URL 管理器来“美化” URL 怎么办。我不想要?以及我的 URL 中的参数名称和 =。我希望 URL 看起来像:www.yourdomain.com/yourController/yourAction/5/hello/de 并且我希望 URL 管理器将 URL 组件映射到 GET 参数
    • 对不起。我离这个太久了 - 但你可以提出一个新问题并参考这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多