關于CodeIgniter的入門請參照這篇文章:[PHP]框架教程:CodeIgniter框架的簡易使用
下面介紹一下創建視圖的各種不同方法-與你的控制器和模型協同并用來顯示結果的頁面。
1、編寫視圖
視圖是用戶能看到你的網站的所有。他們使用一個統一的接口,而且可以根據需要進行修改。MVC的好處之一是你分開了表示層和邏輯層,一切都顯得很干凈。
到現在為止,我們已經可以創建簡單的“welcome”頁面,現在讓我們看看該如何使它變得更精細。
視圖實際上是一組包含有你的內容的HTML結構。結構中有各種元素,如顏色,字體,文字布局等;不過視圖不關心這些,它要做的只是取來內容,顯示出來。
創建視圖,首先你需要創建一個HTML網頁的骨架,并保存為.php后綴。讓我們稱它為basic_view.php。保存在
application/views目錄中。(CI的loader會在這個目錄尋找視圖文件。)
<html><head></head><body><p>Helloworld!</p></body></html>
function index(){$this->load->view('basic_view');}
function index(){ $data['mytitle']="A website monitoring tool"; $data['mytext'] ="Test Index.";}
然后,我們調用裝載函數:
<?phpfunction index(){ $data['mytitle']="A website monitoring tool"; $data['mytext'] ="Test Index."; $this->load->view('basic_view',$data);}?>
<html><head></head><body><h1 class="test"><?php echo$mytitle;?></h1><p class="test"><?php echo$mytext;?></p></body></html>
下面來看一下頁面的效果:
2、PHP語法的長格式和短格式
在我們繼續之前,先了解一下PHP標記的兩種不同格式。常用的方式是:
<?php echo $somevariable ?>
<?=$somevariable ?>
3、嵌套視圖
為了最大程度地重用代碼,我們可以提取HTML頁面的公共部分,例如,header和footer,然后在顯示實際視圖時把它們組合起來。
讓我們創建一個視圖的header部分,這是一個符合W3C標準的header、包含HTML聲明和meta數據。
首先,我們列出header部分的代碼:
<title><?php echo $mywebtitle?></title><base href="<?php echo"$base";?>"/><meta name="robots" content="<?php echo $myrobots?>"><link rel="stylesheet" type="text/css" href="<?php echo"$base/$css";?>"/>
第一,在主調用視圖中讀入其它視圖,因此我們的主視圖,也就是basic_view,應該加上一行:
<html><head><?php $this->load->view('header_view');?></head><body><h1><?php echo$mytitle;?></h1><p><?php echo$mytext;?></p></body></html>
function index(){ $data['mytitle'] = "A website monitoring tool"; $data['mytext'] = "Test Text!"; $data['myrobots'] = '<meta name="robots" content="noindex,nofollow">'; $data['mywebtitle']= 'Web monitoring tool'; $data['base'] =$this->config->item('base_url'); $data['css'] =$this->config->item('css'); $this->load->view('basic_view',$data);}
第二個方法將把視圖加入控制器里面,給它分配一個變量:
function index(){ $data['mytitle'] ="A website monitoring tool"; $data['mytext'] ="Test!Test!"; $data['myrobots'] ='<meta name="robots" content="noindex,nofollow">'; $data['mywebtitle']='Web monitoring tool'; $data['base'] = $this->config->item('base_url'); $data['css'] =$this->config->item('css'); $this->load->view('header_view','', TRUE); $this->load->view('basic_view',$data);}
<html><head><?php $this->load->view('header_view');?></head><body><h1 class="test"><?php echo$mytitle;?></h1><p class="test"><?php echo$mytext;?></p></body></html>
而且如果我們想要改變在網頁上的信息,我們不需要去改動視圖,而是只需要改變控制器里的變量值。“松耦合”原則使設計、升級和維持你的網站比較容易。
4、網站架構的現實問題
請稍等片刻,我們在header_view中動態生成了CSS樣式表的地址:
<link rel="stylesheet"type="text/css"href="<?php echo"$base/$css";?>"/>
動態地產生這些數據需要這樣一些操作:
首先,控制器必須在config文件中讀取它們,
然后控制器必須在$data數組中裝入它們而且傳送它們到視圖,
然后視圖必須解開成為內存變量$base和$css,真正使用這兩個變量的是HTML協議。
似乎這樣做太繞圈子了,為什么不直接在視圖中靜止地插入數據?
<link rel="stylesheet" type="text/css" href="http://www.mysite.com/mystylesheet.css"/>
這取決于你的優先級。關鍵是要合理運用MVC設計原則,讓它作為一種工具,而不是束縛。為此,CI給了你很大自由。
完整的項目源碼:[PHP]框架CodeIgniter的簡單測試源碼