- 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 & Session 管理
- FuelPHP - 事件
- FuelPHP - 郵件管理
- FuelPHP - 分析器
- 錯誤處理 & 除錯
- FuelPHP - 單元測試
- 完整的執行示例
- FuelPHP 有用資源
- FuelPHP - 快速指南
- FuelPHP - 有用資源
- FuelPHP - 討論
FuelPHP - 控制器
控制器負責處理進入 FuelPHP 應用的每個請求。根據 FuelPHP 的規定,控制器位於 fuel/app/classes/controller/。讓我們先建立一個員工控制器。
employee.php
<?php
class Controller_Employee extends Controller {
public function action_home() {
echo "FuelPHP-Employee application!";
}
public function action_index() {
echo "This is the index method of employee controller";
}
}
控制器方法
控制器透過使用其action_ 方法之一來處理 Web 請求。我們可以根據應用程式的需求建立任意數量的action_ 方法。預設的action_ 方法是action_index。action_index 方法可以透過以下任一 URL 呼叫。
https://:8080/employee/index https://:8080/employee/
結果
讓我們在我們的employee應用程式中建立一個新的action方法,action_show。
<?php
class Controller_Employee extends Controller {
public function action_home() {
echo "FuelPHP-Employee application!";
}
public function action_index() {
echo "This is the index method of employee controller";
}
public function action_show() {
echo "This is the show method of employee controller";
}
}
action_show 方法可以使用以下 URL 呼叫。
https://:8080/home/show
結果
before( ) 方法
我們可以在控制器中建立一個方法before。此方法將在每次呼叫action_ 方法之前執行。如果該方法最終不存在,則不會呼叫此方法。此方法有助於我們編寫常見的操作,例如登入檢查、預設資料獲取等。
讓我們建立一個before方法並列印一條簡單的文字訊息。
public function before() {
echo "This message comes from <em>before()</em> method</br>";
}
包含 before 動作的索引頁
包含 before 動作的顯示頁
after( ) 方法
after() 方法類似於before() 方法,但在呼叫action_ 方法後執行。after() 方法將response作為輸入並返回response物件。
public function after($response) {
if ( ! $response instanceof Response) {
$response = \Response::forge($response, $this->response_status);
}
return $response;
}
如果輸入為 NULL 或不是 response 物件,則使用 Response 的 forge 方法建立一個新的Response物件並返回它。我們將在後續章節中詳細瞭解 Response 類。
擴充套件控制器
我們可以從另一個控制器擴充套件一個控制器。以下是基本語法。
class Controller_Employee extends Controller_Welcome {
// controller methods
}
這將有助於共享方法。
生成控制器
Fuel 可以使用 Oil 命令生成控制器。以下是語法。
語法
oil g controller <controller-name>
示例
oil g controller sample
執行上述命令後,您將看到以下響應。
結果
Creating view: /path/to/project/fuel/app/views/template.php Creating view: /path/to/project/fuel/app/views/sample/index.php Creating controller: /path/to/project/fuel/app/classes/controller/sample.php
控制器型別
FuelPHP 為各種用途提供不同型別的控制器。它們如下所示:
- 基礎控制器
- 模板控制器
- REST 控制器
- 混合控制器
基礎控制器
Controller 是 FuelPHP 中所有不同型別控制器的基礎控制器。它提供處理 Web 請求所需的所有基本功能。它支援請求、響應、會話等。除非另有說明,否則我們將在所有示例中使用它。
模板控制器
模板控制器是基礎控制器的擴充套件。它具有模板支援、預定義的 before() 和 after() 方法。基本上,它可以用於將您的檢視包裝在具有頁首、頁尾、側邊欄等的佈局中。要建立模板控制器,我們需要擴充套件Controller_Template類。預設情況下,擴充套件Controller_Template類的所有類的方法都需要使用模板。
它定義如下:
class Controller_Employee extends Controller_Template {
public function action_index() {
// add methods
}
}
我們將在檢視章節中詳細討論模板控制器。
REST 控制器
REST 控制器是基礎控制器的擴充套件。它預先支援 REST API 程式設計。這將允許您輕鬆構建 API。
要建立 REST 控制器,您需要擴充套件Controller_Rest類。它定義如下:
class Controller_Employee extends Controller_Rest {
public function action_index() {
// add methods
}
}
我們將在 Ajax 章節中詳細討論 REST 控制器。
混合控制器
混合控制器在一個基礎控制器中執行 REST 控制器和模板控制器的功能。