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_ 方法之一处理网络请求。我们可以根据应用程序的要求创建尽可能多的 
 action_ 方法。默认的 
 action_ 方法是 
 action_index。 
 action_index 方法可以被以下任一网址调用。
 
 
 
  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 方法可以使用 t 调用他下面的网址。
 
 
 
  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() 方法将 
 response 作为输入并返回 
 response 对象。
 
 
 
  public function after($response) { 
   if ( ! $response instanceof Response) { 
      $response = \Response::forge($response, $this->response_status); 
   } 
   return $response; 
} 
 
   
  
 如果输入为 NULL 或不是响应对象,则使用 Response 的伪造方法创建一个新的 
 Response 对象并返回它。我们将在后续章节中详细学习 Response 类。
 
扩展控制器
 
 我们可以从另一个控制器扩展一个控制器。以下是基本语法。
 
 
 
  class Controller_Employee extends Controller_Welcome { 
   // controller methods 
} 
 
   
  
 这将有助于分享方法。
 
生成控制器
 
 Fuel 可以选择使用 Oil 命令生成控制器。以下是语法。
 
语法
 
 
 
  oil g controller <controller-name> 
 
   
  
示例
 
 
 执行上述命令后,您将看到以下响应。
 
结果
 
 
 
  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 Controller 是 Base Controller 的扩展。它具有对 REST API 编程的预定义支持。这将使您能够轻松构建 API。
 
 要创建 rest 控制器,您需要扩展 
 Controller_Rest 类。其定义如下。
 
 
 
  class Controller_Employee extends Controller_rest { 
   public function action_index() { 
      // add methods 
   } 
}
 
   
  
 我们将在 Ajax 章节中讨论更多关于 rest 控制器的内容。
 
混合控制器
 
 混合控制器在单个基本控制器中执行 REST 控制器和模板控制器的功能。