2012-12-02 28 views
0

我有一個表叫類:的Yii - URL mamanement優化

  • ID
  • CATEGORY_NAME
  • PARENT_ID

和Products表:

  • ID
  • CATEGORY_ID
  • PRODUCT_NAME

爲了簡單起見,這裏給和catogory_name是唯一的URL別名

,我想使URL像有

店/ computer_parts/CPU /英特爾 - 是的網址有intel父母cpu和電腦的「intel」類別

And Products like like

店/ computer_parts/CPU /英特爾/ intel_core_i5_2500k - 是產品

我看到的解決辦法,將在模型的方法,如

分類模型

public function geturl() { 
    ***in cycle getting aliases of all parents*** 
    return Yii::app()->createUrl(...etc 
} 

和產品

public function geturl() { 
    *** getting aliases of category and parents *** 
    return Yii::app()->createUrl(...etc 
} 

是它如何做到這一點更簡單?

回答

0

首先,設置網址格式,路徑和showScriptName爲false(保護/配置/ main.php)你的主要配置:

'urlManager'=>array(
    'urlFormat'   => 'path', 
    'showScriptName' => false, 
    'rules'=>array( 
     ... 

接下來,你需要設置在網址規則你的配置,是這樣的:

shop/<parent:.+>/<child:.+>/<category:.+>/<product:.+> => 'product/view', 
shop/<parent:.+>/<child:.+>/<category:.+>/    => 'product/index', 

指向這兩個網址產品/視圖和產品/指數(顯然這會改變你擁有的任何控制器/動作來處理每一種)。現在,您將能夠從URL訪問所有的GET變量,因此,例如:

$product = $_GET['product']; 

你必須寫你的控制器/動作識別您當前所在的URL結構什麼樣的水平和處理它因此。

+0

不,不)我知道這一點,我是關於服務器的負載,當我得到每個產品的網址 –