2012-03-02 83 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