Yii自定义url参数的显示

时间:2012-03-02 13:39:38

标签: php url yii

我正在尝试更改Yii显示“产品”页面网址的方式。 现在,它显示了这一点:

   localhost/~antonio/project/?r=site/product&id=HXW1410D260D0TB013&language=en

或者使用urlFormat = path

   localhost/~antonio/project/en/product/id/HXW1410D260D0TB013

我需要网址看起来像这样:

   localhost/~antonio/project/en/product/HXW1410D260D0TB013

我查看了Yii文档,但我找不到办法来做到这一点。

感谢。

2 个答案:

答案 0 :(得分:2)

将以下规则添加到main.php rules数组中:

'product/<id:[A-Z0-9]+>'=>'site/product',

所以你应该有像

这样的东西
'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'rules' => array(
                'product/<id:[A-Z0-9]+>'=>'site/product',
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
         ),
  ),

基本上规则格式如下:

'product/<id:[A-Z0-9]+>'=>'site/product',

&lt;&gt;中的条款意味着你要传递一个变量,所以

<id:[A-Z0-9]+>

表示如果正则表达式匹配(如果它只有大写字母和数字),则传递$ _GET ['id']。

所以上面的规则意味着如果url匹配product / something,然后将其发送到site / product并将“something”作为名为id的$ _GET参数传递。

希望澄清。

答案 1 :(得分:0)

为此,请转到配置文件夹中的main.php文件并取消注释以下内容以启用路径格式的网址:

'urlManager' => array(
    'urlFormat' => 'path',
    'rules' => array(
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
),