- 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 - 控制器
控制器负责处理进入 FuelPHP 应用程序的每个请求。根据 FuelPHP 的说法,控制器位于Fuel/app/classes/controller/。让我们首先创建一个员工控制器。
员工.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 调用。
http://localhost:8080/employee/index http://localhost:8080/employee/
结果
让我们在员工应用程序中创建一个新的操作方法,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"; } }
可以使用以下 URL 调用action_show方法。
http://localhost:8080/home/show
结果
before() 方法
我们可以在控制器之前创建一个方法。该方法将在每次action_方法调用之前执行。如果该方法不存在,则不会调用它。该方法帮助我们编写常见的操作,例如登录检查、默认数据获取等。
让我们创建一个before方法并打印一条简单的文本消息。
public function before() { echo "This message comes from <em>before()</em> method</br>"; }
包含之前操作的索引页
显示包含之前操作的页面
after() 方法
after()方法与before()方法类似,但在调用action_方法之后执行。after()方法将响应作为输入并返回响应对象。
public function after($response) { if ( ! $response instanceof Response) { $response = \Response::forge($response, $this->response_status); } return $response; }
如果输入为 NULL 或不是响应对象,则使用 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 为不同的目的提供了不同类型的控制器。它们如下 -
- 底座控制器
- 模板控制器
- 休息控制器
- 混合控制器
基础控制器
Controller 是 FuelPHP 中可用的所有不同类型控制器的基本控制器。它提供了处理 Web 请求所需的所有基本功能。它支持请求、响应、会话等。除非另有说明,我们将在所有示例中使用它。
模板控制器
模板控制器是基本控制器的扩展。它具有模板支持、预定义的 before() 和 after() 方法。基本上,它可以用来将视图包装在带有页眉、页脚、侧边栏等的布局中。要创建模板控制器,我们需要扩展 Controller_Template类。默认情况下,扩展Controller_Template的类的所有方法都需要使用该模板。
它的定义如下。
class Controller_Employee extends Controller_Template { public function action_index() { // add methods } }
我们将在视图章节中讨论更多有关模板控制器的内容。
休息控制器
休息控制器是基本控制器的扩展。它预先定义了对 REST API 编程的支持。这将使您能够轻松构建 API。
要创建休息控制器,您需要扩展Controller_Rest类。它的定义如下。
class Controller_Employee extends Controller_Rest { public function action_index() { // add methods } }
我们将在 Ajax 章节中详细讨论剩余控制器。
混合控制器
混合控制器在单个基本控制器中执行 REST 控制器和模板控制器的功能。