2012-03-02 64 views
1

我试图改变Yii显示我的“产品”页面的网址的方式。 现在,它显示了这一点:Yii自定义url参数的显示

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

或者与网址格式=路径

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

我需要的URL看起来像这样:

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

我看着Yii的文档,但我找不到办法做到这一点。

谢谢。

回答

2

添加以下规则来你的main.php规则阵列:

'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', 

条款<>表示您传递变量,因此

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

意味着要传递$ _GET [“身份证”]如果正则表达式匹配(如果它只有大写字母和数字)。

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

希望澄清。

+0

或者' '产品/ '=>' 网站/产品','可能也工作 – Avanche 2012-03-02 14:36:14

+0

完美的工作。谢谢。 – 2012-03-02 16:43:34

0

对于这一点,到main.php文件中的config文件夹并取消以下,使网址在路径格式:

'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>', 
    ), 
), 
+0

这将无法正常工作,因为它预计产品ID是一个数字,也从问题来看,他已经启用了网址管理器。 – Avanche 2012-03-02 14:44:56