2011-01-20 116 views
0

我目前正在爲一個客戶端的CMS工作,我打算使用Codeigniter來構建它,它只是一個快速項目,所以我沒有尋找一個強大的解決方案。codeigniter路由

要創建頁面,我需要保存頁面詳細信息,並根據與mysql表中的slug匹配的slug來拉出正確的頁面。

然而,我的問題是,爲了這個工作,我必須從URL控制器然後傳遞給模型,這意味着我也有控制器在URL中,我不想要的是它有可能從路由URL中刪除控制器?

所以

/頁/我們的層高

成爲

/我們的層高

這可能

+0

我問了一個類似的問題 - 你可能會發現答案很有用:http://stackoverflow.com/questions/3725050/codeigniter-best-routes-configuration-for-cms – BrynJ 2011-01-20 17:04:24

回答

1

是的,當然。我最近自己建立了一個Codeigniter驅動的CMS。路線的全部目的是改變你的網址的外觀和功能。它可以幫助您擺脫控制器/函數/參數/參數範例,並讓您選擇您希望網址的外觀如何。

  1. 在控制器目錄下創建一個頁面控制器
  2. 將一個_remap功能,這裏面如果您使用的是最新版本的CI 2.0從到位桶趕控制器
  3. 所有請求,那麼你的routes.php文件,你可以把它放在文件底部:$routes['404_override'] = "pages";,然後所有對不存在的控制器的調用都會被髮送到你的控制器,然後你可以檢查是否存在URL塊。您還應該將頁面設置爲默認控制器值。

查看我幾個月前回答的similar question here的回答,例如我在Codeigniter CMS中使用的代碼和工作代碼。

0

這是我在最近的一個項目中使用的代碼。我從某處借了它;不記得在哪裏。

function _remap($method) 
{ 
    $param_offset = 2; 

    // Default to index 
    if (! method_exists($this, $method)) 
    { 
    // We need one more param 
    $param_offset = 1; 
    $method = 'index'; 
    } 

    // Since all we get is $method, load up everything else in the URI 
    $params = array_slice($this->uri->rsegment_array(), $param_offset); 

    // Call the determined method with all params 
    call_user_func_array(array($this, $method), $params); 
} 

然後,我index功能就是你乾脆把page功能。

2

我會推薦這樣做。

假設您有:控制器「頁面」 /法「秀」

$route['page/show/:any'] = "$1"; 

或方法,我不推薦指數,如果您有類似的新聞,添加以下。

$route['news/show/:any'] = "news/$1"; 

就是這樣。