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

廣告
© . All rights reserved.