視圖

簡單來講,一個視圖其實就是一個 Web 頁面,或者頁面的一部分,像頁頭、頁腳、側邊欄等。 實際上,視圖能夠很靈活的嵌在另外一個視圖裏,而後這個視圖再嵌在另外一個視圖裏,等等, 若是你想使用這種層次結構的話,能夠這樣作。php

視圖不是直接被調用的,它必須經過 控制器 來加載。在 MVC 框架裏, 控制器扮演着相似於交警的角色,它專門負責讀取特定的視圖。html

建立視圖

使用你的文本編輯器,建立一個 blogview.php 文件,代碼以下:數據庫

<!DOCTYPE html>
<html>
<head>
	<title>My Blog</title>
</head>
<body>
	<h1>Welcome to my Blog!</h1>
</body>
</html>

而後保存到你的 application/views/ 目錄下。數組

加載視圖

使用下面的方法來加載指定的視圖: app

$this->load->view('name');

name 參數爲你的視圖文件名。文件的擴展名 .php 能夠省略,除非你使用了其餘的擴展名。框架

如今,打開你以前建立的控制器文件 Blog.php ,而後將 echo 語句替換成 加載視圖的代碼:編輯器

<?php
class Blog extends CI_Controller {

    public function index()
    {
        $this->load->view('blogview');
    }
}

跟以前同樣,經過相似於下面的 URL 來訪問你的網站,你將看到新的頁面:ide

example.com/index.php/blog/

輸出結果:codeigniter

 

 

加載多個視圖

CodeIgniter 能夠智能的處理在控制器中屢次調用 $this->load->view() 方法。 若是出現了屢次調用,視圖會被合併到一塊兒。例如,你可能但願有一個頁頭視圖、 一個菜單視圖,一個內容視圖 以及 一個頁腳視圖。代碼看起來應該這樣:網站

<?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');
    }

}

向視圖添加動態數據

經過視圖加載方法的第二個參數能夠從控制器中動態的向視圖傳入數據, 這個參數能夠是一個 數組 或者一個 對象 。這裏是使用數組的例子:

$data = array(
    'title' => 'My Title',
    'heading' => 'My Heading',
    'message' => 'My Message'
);

$this->load->view('blogview', $data);

這裏是使用對象的例子:

$data = new Someclass();
$this->load->view('blogview', $data);

注意:當你使用對象時,對象中的變量會轉換爲數組元素。

讓咱們在你的控制器文件中嘗試一下,添加以下代碼:

<?php
class Blog extends CI_Controller {

    public function index()
    {
        $data['title'] = "My Real Title";
        $data['heading'] = "My Real Heading";

        $this->load->view('blogview', $data);
    }
}

再打開你的視圖文件,將文本修改成傳入的數組對應的變量:

<!DOCTYPE html>
<html>
<head>
	<title><?php echo $title;?></title>
</head>
<body>
	<h1><?php echo $heading;?></h1>
</body>
</html>

使用循環:

傳入視圖文件的數據不單單限制爲普通的變量,你還能夠傳入多維數組, 這樣你就能夠在視圖中生成多行了。例如,若是你從數據庫中獲取數據, 通常狀況下數據都是一個多維數組。

這裏是個簡單的例子,將它添加到你的控制器中:

<?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);
	}
}

而後打開你的視圖文件,建立一個循環:

<!DOCTYPE html>
<html>
<head>
	<title><?php echo $title;?></title>
</head>
<body>
	<h1><?php echo $heading;?></h1>
	<h3>My Todo List</h3>
	<ul>
	<?php foreach($todo_list as $item):?>
		<li><?php echo $item; ?></li>
	<?php endforeach;?>
	</ul>
</body>
</html>

跟以前同樣,經過相似於下面的 URL 來訪問你的網站,你將看到新的頁面:

example.com/index.php/blog/

輸出結果以下:

相關文章
相關標籤/搜索