簡體   English   中英

代碼點火器路由

[英]codeigniter routing

我目前正在為客戶端開發CMS,並且我將使用Codeigniter進行構建,因為這只是一個快速的項目,所以我沒有在尋找可靠的解決方案。

要創建頁面,我要保存頁面詳細信息,並根據與mysql表中的段匹配的段來提取正確的頁面。

但是,我的問題是,要使其正常工作,我必須先從控制器的URL中傳遞該段信息,然后再傳遞給模型,這意味着我也希望在URL中也具有該控制器,但我希望將其刪除控制器從帶有路由的URL?

所以

/ page /我們的故事

變成

/我們的故事

這可能嗎

我建議這樣做。

假設您有:控制器“頁面” /方法“顯示”

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

或方法是我不推薦的索引,如果您有類似新聞的內容,請添加以下內容。

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

而已。

是的,當然了。 我最近剛剛自己構建了一個Codeigniter驅動的CMS。 路由的全部目的是更改您的網址的外觀和功能。 它可以幫助您脫離控制器/函數/參數/參數范式,並可以選擇想要的URL外觀。

  1. 在controllers目錄中創建頁面控制器
  2. 在其中放置_remap函數以捕獲對控制器的所有請求
  3. 如果您正在使用Bitbucket的CI 2.0的最新版本,則可以在$routes['404_override'] = "pages";文件中將該文件放在文件底部: $routes['404_override'] = "pages"; 然后所有不存在的對控制器的調用都將發送到您的控制器,然后您可以檢查是否存在URL塊。 您還應該將頁面設為默認控制器值。

幾個月前,我在這里針對類似問題看到了我的答案,例如我在Codeigniter CMS中使用的示例代碼和工作代碼。

這是我在最近的項目中用於實現此目的的代碼。 我從某處借來的。 不記得在哪里。

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函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM