接下來的項目會和Web 技術有關,要使用CodeIgniter,在開始前先來了解下。
CodeIgniter Flow
- index.php 檔案是最一開始的 controller,初始化 Codeigniter 基礎資源。
- Router 解釋 HTTP 請求 去找到這個請求該往哪裡走。
- 如果 cache 檔案存在,將會直接通過一般系統執行回傳給瀏覽器資料。
- Security。在傳給 application controller 讀取之前,HTTP 請求以及所有使用者送出的資料會通過它來過濾。
- Controller 載入 model、core libraries、helpers、以及程式需要的所有特殊資源。
- 最後 View 是最終的呈現結果,來送回給瀏覽器。如果快取是啟動的,view 會在第一次快取一份,之後使用者在發 HTTP 請求的時候,就會直接回傳這份快取,不需要再通過 Router 了。
玩玩看CodeIgniter
當瀏覽器發出一個請求給:http://example.com/news/latest/10我們可以想像那邊有個控制器名為 “news” 。而 news 控制器將會被呼叫的方法(method)為 “latest” 。
這個 latest 方法的工作可能是抓取十個新聞項目,並顯示在頁面上。
這在 MVC 中很常見,你看到的 URL 格式將會是這樣:
http://example.com/[controller-class]/[controller-method]/[arguments];
當 URL 變得更複雜時這可能會改變。但目前來說這就是我們所需要知道的全部了。
準備頁面模板
在 application/views/templates/這個資料夾下面,
建立 header.php,放置一些內容,比如下面這些:
1 2 3 4 5 6 7 |
<html> <head> <title>CodeIgniter Tutorial</title> </head> <body> <h1>CodeIgniter Tutorial</h1> |
建立footer.php,放置一些內容,比如下面這些:
1 2 3 |
<em>© 2014</em> </body> <html> |
準備Controller
在 application/controllers/資料夾下創建pages.php:
其中show_404()是CodeIgniter的方法。
當頁面存在時,會先讀取header和footer,如果不存在則出現404
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php public function view($page = 'home') { if ( ! file_exists(APPPATH.'/views/pages/'.$page.'.php')) { // Whoops, we don't have a page for that! show_404(); } $data['title'] = ucfirst($page); // Capitalize the first letter $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('templates/footer', $data); } |
在控制其中設置了一個view() 方法。
這個方法接受一個參數,這個參數就是將要被讀取的頁面名稱。靜態頁面的模板將會放在 application/views/pages/ 資料夾。
準備View
參考資料:http://codeigniter.org.tw/userguide3/overview/appflow.html