首先,你需要建立乙個可以處理靜態內容請求的控制器類。控制器,是乙個用來**完成某項任務的php類,它充當基於mvc架構應用程式的「粘合劑」(譯者注:控制器用來粘合/協調不同模型和檢視。隨著教程的深入,你會更深刻的理解這一點)。
舉例來說,假設存在某個針對如下url的請求:仔細觀察此url位址,我們可以猜測它所完成的任務:存在某個類名為"news"的控制器,呼叫此類下的"latest"方法用來提取10條最新新聞,然後解析顯示在最終瀏覽器頁面上。在基於mvc架構思想的應用程式中,我們經常會見到如下典型url格式:
控制器類名]/[控制器方法名]/[所需引數]
在實際專案中,以上典型格式可能會存在變化趨於複雜。但到目前為止,了解這一典型格式已然足夠。
<?phpclass pages extends ci_controller
}
你已經建立了乙個名為"pages"的類, 包涵乙個名為"view"的方法,並定義了乙個名為 $page 的引數。 這個pages類繼承了ci_controller類。這就意味著 這個新的pages類可以繼承ci_controller (system/core/controller.php) 類裡面定義的方法和變數。
這個控制器會成為你的**程式每次請求的中心。 在非常技術性的codeigniter的討論中,我們把它稱為 超級物件。就像任何php類一樣,在你自己的控制器中,使用$this來呼叫它,這樣就可以實現用 $this 來載入所有變數、檢視和對這個框架進行一般操作。
現在你已經建立了自己的第乙個方法,是時候來做幾個基礎的頁面模板了。我們將要建立兩個 "檢視" (模板頁面) ,也就是頁面的頁頭(header)和頁尾(footer)。
為了能載入那些頁面,你需要檢查一下它們是否存在:
public function view($page = 'home')$data['title'] = ucfirst($page); // 將title中的第乙個字元大寫
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
此時,如果頁面存在,它將被載入,同時,頁頭和頁尾也會顯示出來。如果頁面不存在,那麼就會顯示404錯誤頁面。
這個方法中的第一行是檢查檔案是否存在的,使用的是php自帶的函式 file_exists() 。show_404() 是codeigniter中的函式,用來呼叫404錯誤頁面。
在頁頭模板(header.php)中,我們用 $title 變數來自定義頁面標題()。而這個變數的值,我們現在在這個方法中對它進行了定義。不過,我們並沒有將這個值直接賦給變數,而是將它作為乙個元素賦給了 $data 陣列。
最後一項,按照需要顯示的順序來載入那些檢視。 view() 方法中的第二個引數是用來傳遞值給檢視的。陣列中的每個值都被定義成與它關鍵字相同的乙個變數,如控制器中 $data['title'] 的值就等同於檢視中變數$title。
這個控制器現在可以工作了,在瀏覽器中鍵入後面的位址 [你的**]index.php/pages/view 就可以看到。輸入 index.php/pages/view/about 也可以看到about頁面,也是帶頁頭和頁尾的哦。
根據自定義路由的規則,你也可以自己定義任何控制器和方法的uri,這樣就可以擺脫下面的既定規則了。controller-class]/[controller-method]/[arguments]
在codeigniter裡,路由規則是按照從上到下的順序讀取的,而其中設定路由的請求是第乙個被讀到的。沒有規則從左到右都是 控制器名斜線(/)方法名 的組合。請求出現的時候,codeigniter就開始最合適的內容進行匹配,呼叫適當的控制器和方法,也可能呼叫引數。
更多關於路由設定的資訊都在 uri 路由 文件 裡。
回到上面的**,第二行是指利用萬用字元 (:any) 可以使任何請求都能匹配到 $routes 陣列,並且通過引數傳遞給pages類的view()方法。
現在,訪問下 index.php/about. 看看是不是已經能正確地顯示頁面了呢?贊!
CI框架 載入靜態內容
你要做的第一件事情是新建乙個 控制器 來處理靜態頁面,控制器就是乙個簡單的類,用來完成你的工作,它是你整個 web 應用程式的 粘合劑 例如,當訪問下面這個 url 時 通過這個 url 我們就可以推測出來,有乙個叫做 news 的控制器,被呼叫的方法為 latest 這個方法的作用應該是查詢 10...
CI 框架各類庫的載入方法
1 核心類庫 核心類庫位於 system core 自動載入 控制器中使用方式 直接使用 aa this config base url bb this uri uri string 其他位置使用 ci get instance aa ci config base url aa ci uri uri...
ci框架 CI超級物件
目錄結構說明 license.txt 許可協議 user guide 使用者手冊 system 框架核心檔案 index.php 入口檔案 mvc1.入口檔案。唯一乙個讓瀏覽器直接請求的指令碼檔案 2.控制器controller 協調模型和檢視 3.模型 提供資料,儲存資料 4.檢視view 只負責...