2014-08-27 28 views
0

我正在創建一個新的網站,該網站從數據庫中加載所有主分區和子分區。我也測試了導航,也就是說,如果我點擊任何主類別,它完全加載所有相應的子類別,沒有任何問題。但是,目前,我通過在URL中傳遞查詢字符串來做到這一點。例如CodeIgniter中的動態控制器

http://localhost/MyController?id=32145 

讓我們假設該ID,32145,代表即主類別「關於我們」。我的問題是如何改變上述網址類似:

http://localhost/Aboutus 

,如果有下任何子類關於我們比它應顯示爲:

http://localhost/Aboutus/Mission 

請幫我因爲我真的被這個問題困住了。

回答

0

默認情況下,CodeIgniter使用基於段的方法,你可以做URL路由的方式喜歡你的問題的第二部分 - 「如果有任何一個孩子類別下關於我們」

$route['product/(:any)'] = "catalog/product_lookup"; 

更多在這裏:https://ellislab.com/codeigniter/user-guide/general/routing.html

,但如果你想重寫完整的URL不是你應該檢查的.htaccess重寫

+0

如果我需要動態創建路徑$ route ['product /(:any)']來說$ route ['db_value /(:any)']。比要做什麼? – user3811138 2014-08-27 12:06:10

+0

您可以在Zend Framwork中無痛地做到這一點 – Yang 2014-08-27 12:45:59

0

這是不容易的,遷移做一次。

  1. 在數據庫中,你可以存儲產品的新控制器/ URL(如果沒有它尚未)
  2. 創建新的控制器
  3. 路由控制器,舊的URL重定向到新的URL 控制器
  4. 路線舊網址路由控制器

路由控制器是這樣的:

public function old_url($aProdId) { 
     if (is_null($aProdId)) { 
      // error cannot be null 
     } 

     $NewUrl = $this->new_url_model->getNewUrl($aProdId); 

     if (!$NewUrl) { 
      // error new url not exist 
      return; 
     } 
     redirect(base_url($NewUrl), 'refresh'); 
    }