W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
簡(jiǎn)單來(lái)說,一個(gè)視圖其實(shí)就是一個(gè) Web 頁(yè)面,或者頁(yè)面的一部分,像頁(yè)頭、頁(yè)腳、側(cè)邊欄等。 實(shí)際上,視圖可以很靈活的嵌在另一個(gè)視圖里,然后這個(gè)視圖再嵌在另一個(gè)視圖里,等等, 如果你想使用這種層次結(jié)構(gòu)的話,可以這樣做。
視圖不是直接被調(diào)用的,它必須通過 控制器 來(lái)加載。在 MVC 框架里, 控制器扮演著類似于交警的角色,它專門負(fù)責(zé)讀取特定的視圖。如果你還沒有讀過 控制器 頁(yè)面,你應(yīng)該先看下這個(gè)。
使用在 控制器 頁(yè)面中創(chuàng)建的控制器例子,讓我們?cè)偬砑右粋€(gè)視圖。
使用你的文本編輯器,創(chuàng)建一個(gè) blogview.php 文件,代碼如下:
Welcome to my Blog!
然后保存到你的 application/views/ 目錄下。
使用下面的方法來(lái)加載指定的視圖:
$this->load->view('name');
name 參數(shù)為你的視圖文件名。
注解
文件的擴(kuò)展名 .php 可以省略,除非你使用了其他的擴(kuò)展名。
現(xiàn)在,打開你之前創(chuàng)建的控制器文件 Blog.php ,然后將 echo 語(yǔ)句替換成 加載視圖的代碼:
<?php
class Blog extends CI_Controller {
public function index()
{
$this->load->view('blogview');
}
}
跟之前一樣,通過類似于下面的 URL 來(lái)訪問你的網(wǎng)站,你將看到新的頁(yè)面:
example.com/index.php/blog/
CodeIgniter 可以智能的處理在控制器中多次調(diào)用 $this->load->view() 方法。 如果出現(xiàn)了多次調(diào)用,視圖會(huì)被合并到一起。例如,你可能希望有一個(gè)頁(yè)頭視圖、 一個(gè)菜單視圖,一個(gè)內(nèi)容視圖 以及 一個(gè)頁(yè)腳視圖。代碼看起來(lái)應(yīng)該這樣:
<?php
class Page extends CI_Controller {
public function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
}
在上面的例子中,我們使用了 "添加動(dòng)態(tài)數(shù)據(jù)" ,我們會(huì)在后面講到。
如果你喜歡的話,你的視圖文件可以放到子目錄下組織存儲(chǔ),當(dāng)你這樣做, 加載視圖時(shí)需要包含子目錄的名字,例如:
$this->load->view('directory_name/file_name');
通過視圖加載方法的第二個(gè)參數(shù)可以從控制器中動(dòng)態(tài)的向視圖傳入數(shù)據(jù), 這個(gè)參數(shù)可以是一個(gè) 數(shù)組 或者一個(gè) 對(duì)象 。這里是使用數(shù)組的例子:
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('blogview', $data);
這里是使用對(duì)象的例子:
$data = new Someclass();
$this->load->view('blogview', $data);
注解
當(dāng)你使用對(duì)象時(shí),對(duì)象中的變量會(huì)轉(zhuǎn)換為數(shù)組元素。
讓我們?cè)谀愕目刂破魑募袊L試一下,添加如下代碼:
<?php
class Blog extends CI_Controller {
public function index()
{
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
}
再打開你的視圖文件,將文本修改為傳入的數(shù)組對(duì)應(yīng)的變量:
<?php echo $title;?>
<?php echo $heading;?>
然后通過剛剛的 URL 重新加載頁(yè)面,你應(yīng)該可以看到變量被替換了。
傳入視圖文件的數(shù)據(jù)不僅僅限制為普通的變量,你還可以傳入多維數(shù)組, 這樣你就可以在視圖中生成多行了。例如,如果你從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù), 一般情況下數(shù)據(jù)都是一個(gè)多維數(shù)組。
這里是個(gè)簡(jiǎn)單的例子,將它添加到你的控制器中:
<?php
class Blog extends CI_Controller {
public function index()
{
$data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
}
然后打開你的視圖文件,創(chuàng)建一個(gè)循環(huán):
<?php echo $title;?>
<?php echo $heading;?>
My Todo List
注解
你會(huì)發(fā)現(xiàn)在上例中,我們使用了 PHP 的替代語(yǔ)法,如果你對(duì)其還不熟悉,可以閱讀 這里 。
加載視圖方法有一個(gè)可選的第三個(gè)參數(shù)可以讓你修改它的默認(rèn)行為,它讓視圖作為字符串返回 而不是顯示到瀏覽器中,這在你想對(duì)視圖數(shù)據(jù)做某些處理時(shí)很有用。如果你將該參數(shù)設(shè)置為 TRUE , 該方法返回字符串,默認(rèn)情況下為 FALSE ,視圖將顯示到瀏覽器。如果你需要返回的數(shù)據(jù), 記住將它賦值給一個(gè)變量:
$string = $this->load->view('myfile', '', TRUE);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: