文謅謅的介紹就到上篇為止,接下來要進入實作的部分。
這部分的參考來源就是User Guide上的「指導手冊 − 靜態頁面」
CI的網址通常會長這樣
http://example.com/[控制器類別]/[控制器方法]/[參數們]
控制類別:指繼承Controller的Class
控制方法:指Controller裡頭的function
參數們:傳入function的參數
先來了解MVC檔案各別放哪裡
Model :application/models
Controller:application/controllers
View :application/views
建立Controller
以教學手冊的範例來說,在Controller的目錄下建立pages.php,裡面代碼:
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
我們需要透過Controller幫忙我們傳遞資料,透過CI來做,只需要繼承CI_Controller就可以了,CI幫我們節省很多Code。特別提醒:class name的第一個字要大寫!file name倒是不需要~
接下來我們在Pages類別中建立一個方法——view,給一個變數$page,並且預設值為home。
上述的情形在實際執行時的連結如下,結果應該要相同,當然~
因為程式還沒做完,現在是看不到結果的!
http://example.com/pages/view
http://example.com/pages/view/home
建立View
指導手冊的做法是分別建立「header」、「footer」、「content」三種View,就是一般常見的內容頁搭配制式的頁首頁尾做法。我們在View的目錄中建立temp的資料夾後,分別建立header.php、footer.php,代碼如下:
header.php:
<html>
<head>
<title><?php echo $title ?> - CodeIgniter 2 教學</title>
</head>
<body>
<h1>CodeIgniter 2 教學</h1>
footer.php:
<strong>© 2011</strong>
</body>
</html>
這些就是待會在畫面上呈現的頁首與頁尾。
在View的目錄中建立home.php,內容就是今日的主題:
Hellow World!
你以為程是這樣就跑得出來了嗎?沒有發現controller空空的嗎?!
補上Controller的頁面邏輯
本來是想把頁面邏輯的部分合併在Controller建立,但考量~讀者可能是初學者(高階的人請略過系列文),所以拉出來說明會比較清楚~
public function view($page = 'home')
{
if ( ! file_exists('application/views/'.$page.'.php'))
{
// 哇勒!我們沒有這個頁面!
show_404();
}
$data['title'] = ucfirst($page); // 第一個字母大寫
$this->load->view('temp/header', $data);
$this->load->view($page, $data);
$this->load->view('temp/footer', $data);
}
本篇的code我有略調整~稍後各位客官可以去比對指導手冊,也許再比對的過程中能對CI有更進一步的瞭解!
第一個if是判斷檔案不存在時,call 404畫面,也就是「網頁不存在 not found」頁面。
再來,開始把畫面呈現出來~
$data['title']的部分是指用一個陣列把標題存起來,之後會把他傳到view的畫面上。
用其中一行做解釋:
$this->load->view('temp/header', $data);
載入view目錄中temp/header.php的檔案,並把$data(我們剛剛放標題的陣列)傳入。其他的依此類推。
看看結果
http://example.com/pages/view/
後記
手冊後方有routes.php的修改,目前學習中,還不足以可以解釋這東西,在這邊我就先不提~基本上做到上面,就可以看到結果囉!
後面有機會會再來回來談的,畢竟routes.php是CI重要的一環!明天見!