- FuelPHP 教程
- FuelPHP - 首頁
- FuelPHP - 簡介
- FuelPHP - 安裝
- FuelPHP - 架構概述
- FuelPHP - 簡單 Web 應用程式
- FuelPHP - 配置
- FuelPHP - 控制器
- FuelPHP - 路由
- FuelPHP - 請求 & 響應
- FuelPHP - 檢視
- FuelPHP - 展示器
- FuelPHP - 模型 & 資料庫
- FuelPHP - 表單程式設計
- FuelPHP - 驗證
- 高階表單程式設計
- FuelPHP - 檔案上傳
- FuelPHP - Ajax
- FuelPHP - HMVC 請求
- FuelPHP - 主題
- FuelPHP - 模組
- FuelPHP - 包
- Cookie & 會話管理
- FuelPHP - 事件
- FuelPHP - 郵件管理
- FuelPHP - 效能分析器
- 錯誤處理 & 除錯
- FuelPHP - 單元測試
- 完整的執行示例
- FuelPHP 有用資源
- FuelPHP - 快速指南
- FuelPHP - 有用資源
- FuelPHP - 討論
FuelPHP - 檢視
檢視是 MVC 應用程式的表示層。它將應用程式邏輯與表示邏輯分離。當控制器需要生成 HTML、CSS 或任何其他內容時,它會將任務轉發給檢視引擎。
FuelPHP 提供了一個簡單而靈活的類 View,它具有檢視引擎的所有必要功能。View 類支援渲染檢視檔案。檢視檔案是一個包含嵌入式 PHP 指令的 HTML 頁面。檢視檔案的變數可以使用 View 類作為 PHP 陣列進行設定,並使用陣列的鍵在檢視檔案中引用。讓我們檢查一下 View 類的一些重要方法。
forge
用途 - 建立一個新的 View 物件
引數 - 以下是引數
$file - 檢視檔案的路徑,相對於 views 資料夾,fuel/app/views
$data - 值的陣列
$filter - 設定自動編碼,預設為主配置檔案中的設定
返回值 - 檢視的例項
例如,
$view = View::forge ('path/to/view', array(
'title' => "Show employee,
'employees' => $employees,
));
auto_filter
用途 - 設定是否對資料進行編碼
引數 - 以下是引數
$filter - true / false
返回值 - 當前檢視物件
例如,
$view->auto_filter(); $view = $view->auto_filter(false);
set_filename
用途 - 允許設定或更改檢視檔案。
引數 - 以下是引數 -
$file - 檢視檔案的路徑,相對於 views 資料夾,fuel/app/views
返回值 - 當前 View 物件
例如,
$view = new View();
$view>set_filename('path/to/view');
set
用途 - 設定一個或多個變數的值
引數 - 以下是引數
$key - 變數名或值的陣列
$value - 值 / null
$filter - 編碼設定,true / false
返回值 - 當前檢視物件
例如,
$view = new View();
$view->set(array('name' => 'Jon'));
set_global
set_global 與 set 類似,不同之處在於它適用於所有檢視,並且所有檢視都可以訪問這些變數。這是一個靜態方法。
View::set_global('name', 'Jon', false);
set_safe
用途 - 設定一個或多個變數的值,並開啟安全編碼。
引數 - 以下是引數 -
$key - 變數名或值的陣列
$value - 值 / null
返回值 - 當前檢視物件
例如,
$view = new View();
$view->set_safe(array('name' => 'Jon'), null);
get
用途 - 獲取一個或多個變數的值
引數 - 以下是引數
$key - 變數名
$default - 如果找不到鍵,則返回的預設值
返回值 - 輸入鍵的值
例如,
$view = new View();
$name = $view>get('name'); // name = 'Jon'
render
用途 - 透過將其與本地和全域性變數合併,將檢視檔案渲染成字串
引數 - 以下是引數 -
$file - 檢視檔名
返回值 - 渲染後的檢視檔案作為字串
例如,
$html = View::forge()->render('/path/to/view');
建立檢視
為了理解檢視,讓我們修改控制器 Controller_Employee 的 action 方法 action_show。
employee.php
<?php
class Controller_Employee extends Controller {
public function action_show() {
return View::forge('employee/show');
}
}
現在在 views 目錄(位於 fuel/app/views)中建立一個名為 employee 的資料夾。然後,在 employee 資料夾中建立一個名為 show.php 的檔案,並新增以下程式碼。
show.php
<h3> My first view </h3>
現在,請求 URL https://:8080/employee/show,它會產生以下結果。
向檢視傳遞資料
我們可以使用前面討論過的 View 方法向檢視傳遞資料。以下是一個簡單的示例。
employee.php
class Controller_Employee extends Controller {
public function action_show() {
$data = array(); //stores variables going to views
$data['name'] = ‘Jon’;
$data[‘job’] = ‘Designer’;
//assign the view to browser output
return View::forge('employee/show', $data);
}
}
現在,在檢視檔案中新增更改。
show.php
<html>
<body>
Hello, <?php echo $name; ?>.
Your job is, <?php echo $job; ?>.
</body>
</html>
請求 URL 後,它將顯示名稱和職位,如下所示 -
檢視過濾器
檢視使用輸出編碼來傳遞任何你想要的東西。如果你想傳遞未過濾的資料,我們可以使用 set 方法。
employee.php
class Controller_Employee extends Controller {
public function action_show() {
$view = \View::forge('employee/show');
$view->set('name', 'Jon', true);
$view->set('job', '<em>Designer</em>', false);
return $view;
}
}
請求 URL 後,它將以強調樣式顯示職位詳細資訊,如下所示。
巢狀檢視
FuelPHP 支援巢狀檢視。在巢狀檢視中,一個檢視可以包含一個或多個檢視。要在一個檢視中設定其他檢視,我們可以使用 render 方法,如下所示。
employee.php
class Controller_Employee extends Controller {
public function action_nestedview() {
//assign variables
$data = array();
$data['title'] = 'Home';
$data['name'] = 'Jon';
$data['job'] = 'Designer';
$views = array();
$views['head'] = View::forge('head', $data)->render();
$views['content'] = View::forge('employee/show', $data)->render();
return View::forge('layout', $views, false)->render();
}
}
fuel/app/views/layout.php
<html>
<head>
<?php echo $head; ?>
</head>
<body>
<?php echo $content; ?>
</body>
</html>
fuel/app/views/head.php
<title> <?php echo $title; ?> </title>
fuel/app/views/employee/show.php
Hello, <?php echo $name; ?>. Your job is, <?php echo $job; ?>.
請求 URL https://:8080/employee/nestedview 並檢查源檢視後,它會給出以下程式碼。
<html>
<head>
<title>Home</title>
</head>
<body>
Hello, Jon.
Your job is, Designer.
</body>
</html>
模板控制器
FuelPHP 提供了一個控制器 Controller_Template,它具有內建的佈局概念。佈局概念是使用控制器的 before() 和 after() 方法完成的。要使用模板控制器,我們需要使用 Controller_Template 而不是 Controller 擴充套件控制器。使用 after() / before() 方法時,我們需要呼叫 parent::before 和 parent::after,否則模板會中斷。
<?php
class Controller_Test extends Controller_Template {
public function before() {
parent::before();
// do stuff
}
public function after($response) {
$response = parent::after($response);
// do stuff
return $response;
}
}
template.php
這是 Fuel 中的預設模板檔案。模板檔案用於呼叫 JS、CSS、HTML 和呼叫檢視部分。它位於fuel/app/views/。模板用於將你的檢視包裝在一個具有標題、頁尾、側邊欄等的佈局中。我們可以使用 action 方法中的 $template 變數更改預設模板,如下所示。
fuel/app/classes/controller/test.php
<?php
class Controller_Test extends Controller_Template {
public $template = 'template_test';
public function action_index() {
$this->template->title = 'Example Page';
$this->template->content = View::forge('test/index');
}
}
fuel/app/views/template_test.php
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title><?php echo $title; ?></title>
<?php echo Asset::css('bootstrap.css'); ?>
</head>
<body>
<div>
<?php echo $content; ?>
</div>
</body>
</html>
fuel/app/views/test/index.php
<h3>My Test page</h3>
現在,請求 URL https://:8080/test,它會產生以下結果。
結果
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>Example Page</title>
<link type = "text/css" rel = "stylesheet"
href = "https://:8080/assets/css/bootstrap.css?1464964766" />
</head>
<body>
<div>
<h3>My Test page</h3>
</div>
</body>
</html>
生成檢視頁面
您可以使用 Fuel 的 Oil 控制檯生成檢視頁面。以下是基本語法。
oil g controller <controller-name> <page1> <page2> ..
要生成一個帶有主頁和登入頁面的管理員控制器,請使用以下命令。
oil g controller admin home login
結果
Creating view: /path/to/app/fuel/app/views/admin/home.php Creating view: /path/to/app/fuel/app/views/admin/login.php Creating controller: /path/to/app/fuel/app/classes/controller/admin.php