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_indexaction_index 方法可以通过以下任一 URL 调用。

https://127.0.0.1:8080/employee/index
https://127.0.0.1:8080/employee/

结果

Employee Controller

让我们在我们的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

结果

Show Method

before( ) 方法

我们可以在控制器中创建一个方法before。此方法将在每次调用action_ 方法之前执行。如果该方法最终不存在,则不会调用此方法。此方法有助于我们编写常见的操作,例如登录检查、默认数据获取等。

让我们创建一个before方法并打印一条简单的文本消息。

public function before() { 
   echo "This message comes from <em>before()</em> method</br>"; 
} 

包含 before 动作的索引页

Index Before Action

包含 before 动作的显示页

Show Before Action

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 控制器和模板控制器的功能。

广告