CI框架--加载静态内容
首先,你需要創建一個可以處理靜態內容請求的控制器類。控制器,是一個用來代理完成某項任務的PHP類,它充當基于MVC架構應用程序的“粘合劑”(譯者注:控制器用來粘合/協調不同模型和視圖。隨著教程的深入,你會更深刻的理解這一點)。
舉例來說,假設存在某個針對如下URL的請求: http://example.com/news/latest/10 仔細觀察此URL地址,我們可以猜測它所完成的任務:存在某個類名為"news"的控制器,調用此類下的"latest"方法用來提取10條最新新聞,然后解析顯示在最終瀏覽器頁面上。在基于MVC架構思想的應用程序中,我們經常會見到如下典型URL格式: http://example.com/[控制器類名]/[控制器方法名]/[所需參數] 在實際項目中,以上典型格式可能會存在變化趨于復雜。但到目前為止,了解這一典型格式已然足夠。
創建一個控制器文件application/controllers/pages.php,并編寫如下代碼:
<?phpclass Pages extends CI_Controller {public function view($page = 'home'){} }?
你已經創建了一個名為"pages"的類, 包涵一個名為"view"的方法,并定義了一個名為 $page 的參數。 這個pages類繼承了CI_Controller類。這就意味著 這個新的pages類可以繼承CI_Controller (system/core/Controller.php) 類里面定義的方法和變量。
這個控制器會成為你的網站程序每次請求的中心。 在非常技術性的CodeIgniter的討論中,我們把它稱為 超級對象。就像任何php類一樣,在你自己的控制器中,使用$this來調用它,這樣就可以實現用 $this 來加載所有變量、視圖和對這個框架進行一般操作。
現在你已經創建了自己的第一個方法,是時候來做幾個基礎的頁面模板了。我們將要創建兩個 "視圖" (模板頁面) ,也就是頁面的頁頭(header)和頁腳(footer)。
創建頁頭文件 application/views/templates/header.php ,代碼如下。
<html> <head><title><?php echo $title ?> - CodeIgniter 2 Tutorial</title> </head> <body><h1>CodeIgniter 2 Tutorial</h1>?
頁頭文件包括在正式加載視圖前需要的基本的HTML代碼。同時,這里還輸出了 $title 變量,一會兒我們會在控制器中對它進行定義。現在我們來創建一個頁腳 application/views/templates/footer.php ,代碼如下:
<strong>? 2011</strong> </body> </html>?
為控制器添加邏輯結構 (Adding logic to the controller)
之前你創建了一個控制器并定義了一個方法view()。這個方法里定義了一個參數,它的值是即將加載的頁面的名稱。靜態頁面的模板將被放在 application/views/pages/ 文件夾中。
在那個文件夾中需要創建兩個文件,分別為 home.php 和 about.php。在這兩個文件中敲一些任何你喜歡的內容進去并保存。如果你喜歡特別不尋常的內容,可以試試敲“Hello World!”。
為了能加載那些頁面,你需要檢查一下它們是否存在:
public function view($page = 'home') {if ( ! file_exists('application/views/pages/'.$page.'.php')){// 頁面不存在show_404();}$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 變量來自定義頁面標題(<title>)。而這個變量的值,我們現在在這個方法中對它進行了定義。不過,我們并沒有將這個值直接賦給變量,而是將它作為一個元素賦給了 $data 數組。
最后一項,按照需要顯示的順序來加載那些視圖。 view() 方法中的第二個參數是用來傳遞值給視圖的。數組中的每個值都被定義成與它關鍵字相同的一個變量,如控制器中 $data['title'] 的值就等同于視圖中變量$title。
?
設置路由(Routing)
這個控制器現在可以工作了,在瀏覽器中鍵入后面的地址 [你的網址]index.php/pages/view 就可以看到。輸入 index.php/pages/view/about 也可以看到about頁面,也是帶頁頭和頁腳的哦。
根據自定義路由的規則,你也可以自己定義任何控制器和方法的URI,這樣就可以擺脫下面的既定規則了。 http://example.com/[controller-class]/[controller-method]/[arguments]
我們來試試吧。打開路由文件 application/config/routes.php ,并添加下面兩行代碼,并刪除 $route 數組中的其他代碼。
$route['default_controller'] = 'pages/view'; $route['(:any)'] = 'pages/view/$1';?
在CodeIgniter里,路由規則是按照從上到下的順序讀取的,而其中設定路由的請求是第一個被讀到的。沒有規則從左到右都是 控制器名斜線(/)方法名 的組合。請求出現的時候,CodeIgniter就開始最合適的內容進行匹配,調用適當的控制器和方法,也可能調用參數。
更多關于路由設置的信息都在 URI 路由 文檔 里。
回到上面的代碼,第二行是指利用通配符 (:any) 可以使任何請求都能匹配到 $routes 數組,并且通過參數傳遞給pages類的view()方法。
現在,訪問下 index.php/about. 看看是不是已經能正確地顯示頁面了呢?贊!
?
原文地址:http://codeigniter.org.cn/user_guide/tutorial/static_pages.html
轉載于:https://www.cnblogs.com/Hebe/archive/2013/04/17/3025801.html
總結
以上是生活随笔為你收集整理的CI框架--加载静态内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)动态Entity Framewor
- 下一篇: Unity使用协程技术制作倒计时器