iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 3
1
自我挑戰組

自學CodeIgniter跌跌撞撞30天系列 第 3

[ Day 3 ] CodeIgniter 靜態頁面:萬年老梗Hello World !

文謅謅的介紹就到上篇為止,接下來要進入實作的部分。
這部分的參考來源就是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重要的一環!明天見!


上一篇
[ Day 2 ] CodeIgniter 是什麼?能吃嗎?
下一篇
[ Day 4 ] 找不到頁面網址?用URL輔助函式卻site_url() & base_url()傻傻分不清楚?
系列文
自學CodeIgniter跌跌撞撞30天12

尚未有邦友留言

立即登入留言