- 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://127.0.0.1:8080/employee/index https://127.0.0.1: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://127.0.0.1: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 控制器和模板控制器的功能。