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 调用。
http://localhost:8080/employee/index http://localhost: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 调用。
http://localhost: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 的 forge 方法创建一个新的 Response 对象并返回它。我们将在后续章节中详细学习 Response 类。
扩展控制器
我们可以从另一个控制器扩展一个控制器。以下是基本语法。
class Controller_Employee extends Controller_Welcome { // 控制器方法 }
这将有助于共享方法。
生成控制器
Fuel 可以选择使用 Oil 命令生成控制器。以下是语法。
语法
oil g controller <controller-name>
示例
oil g 控制器示例
执行上述命令后,您将看到以下响应。
结果
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 控制器
- 混合控制器
基本控制器
控制器是 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 控制器和模板控制器的功能。