CodeIgniter官方有範例來讓第一次接觸的人比較好上手
這是我選擇先學CodeIgniter的原因不然我其實是想直接學Laravel的
我得說這個範例真的寫得很好
也沒什麼好多說的,直接用網址當範例說明
http://example.com/[controller-class]/[controller-method]/[arguments]
主網域後接的是class名稱,然後是使用的function,最後是要傳入controller的變數
首先新建一隻檔案叫
application/controllers/Pages.php
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
這個步驟創建了一個繼承CI_Controller的類別類別,名為 pages。
並且有一個view方法,接受一個參數名為 $page。
代表這個新的 pages 類別可以存取在 CI_Controller 類別(system/core/Controller.php)中定義的方法以及變數。
第二步是建立兩個模板(View)來作為header和footer
在application/views/templates/建立 header.php,程式碼如下
CodeIgniter Tutorial
application/views/templates/建立 footer.php 檔案,內容如下
© 2015
接下來在application/views/pages下新增兩個檔案
home.php跟about.php,內容隨便打,老套一點就用Hello World!
接下來是增加controller的邏輯
在讀取頁面前要確定要求的頁面存在,所以回到application/controllers/Pages.php
在function 裡面輸入以下程式碼
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);
}
使用PHP的原生函式 file_exists() 用來檢查檔案是否在預期的地方
當頁面存在時,它將會被讀取然後顯示給使用者,包含了 header 與 footer
如果頁面不存在,將會顯示錯誤訊息”404 Page not found”
在 header 模板裡, $title 變數用來客製頁面的標題。
在 header 模板裡, $title 變數用來客製頁面的標題。
在view方法中我們給標題設定了值,但我們不是將值設定給變數,
而是設定給 $data 陣列裡面的 title 元素。
最後要做的事情是按照順序來讀取檢視。
在 view() 方法中的第二個參數是用來傳值給檢視用的。
$data 陣列中的每個值會依照其陣列索引鍵值來存放到同名的變數中。
所以在控制器中 $data[‘title’] 的值等同於檢視中的 $title 。
現在controller可以運作了
訪問[你的網址]index.php/pages/view可以看到剛剛的網頁
若是訪問index.php/pages/view/about 會看到about頁面,且都包含了header與footer
為了精簡我們的URL網址,我們會設定application/config/routes.php 的路由檔案
將預設的內容刪除並加上
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
CodeIgniter 由上而下讀取這個路由規則,並且將請求導向第一個符合的規則。
每一個規則都是正則表達式(位於左側)
對應到由反斜線分隔的控制器與方法(位於右側)
當一個請求進來,CodeIgniter 找出第一個符合的規則
然後呼叫其控制器與方法,可能還包含了參數。
在這邊, $routes 陣列中的第二條規則使用了萬用字串 (:any),它將會符合任何的請求。
並將參數傳送給 pages 類別中的 view() 方法。
現在,訪問 index.php/about
現在,訪問 index.php/about
就會被正確的導到 pages 控制器中的 view() 方法呢!太神奇了!
以上就是第一個靜態頁面
留言
張貼留言