FuelPHP - ตัวควบคุม

Controllersมีหน้าที่รับผิดชอบในการจัดการคำขอแต่ละรายการที่เข้ามาในแอปพลิเคชัน FuelPHP ตาม FuelPHP ตัวควบคุมอยู่ที่fuel/app/classes/controller/. ก่อนอื่นมาสร้างตัวควบคุมพนักงาน

staff.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_ method ได้มากตามความต้องการของแอปพลิเคชัน เริ่มต้นaction_วิธีคือaction_index สามารถเรียกเมธอดaction_indexโดย URL ใดก็ได้ต่อไปนี้

http://localhost:8080/employee/index
http://localhost:8080/employee/

ผลลัพธ์

ให้เราสร้างไฟล์ actionวิธีการaction_showในไฟล์employee ใบสมัคร

<?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_แต่ละครั้ง จะไม่ถูกเรียกถ้าวิธีการนั้นไม่มีอยู่จริง วิธีนี้ช่วยให้เราเขียนการดำเนินการทั่วไปเช่นการตรวจสอบการเข้าสู่ระบบการดึงข้อมูลเริ่มต้นเป็นต้น

ให้เราสร้างวิธีการก่อนและพิมพ์ข้อความธรรมดา

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

หน้าดัชนีด้วยก่อนดำเนินการ

แสดงหน้าก่อนดำเนินการ

หลัง () วิธีการ

after() วิธีการคล้ายกับ before()วิธีการดำเนินการ แต่หลังจากที่action_วิธีการที่เรียกว่า after ()วิธีรับการตอบสนองเป็นอินพุตและส่งคืนอ็อบเจ็กต์การตอบสนอง

public function after($response) { 
   if ( ! $response instanceof Response) { 
      $response = \Response::forge($response, $this->response_status); 
   } 
   return $response; 
}

หากอินพุตเป็น NULL หรือไม่ใช่อ็อบเจ็กต์การตอบสนองให้สร้างอ็อบเจ็กต์การตอบสนองใหม่โดยใช้เมธอดปลอมของการตอบสนองและส่งคืน เราจะเรียนรู้คลาสตอบสนองโดยละเอียดในบทต่อ ๆ ไป

ตัวควบคุมการขยาย

เราสามารถขยายคอนโทรลเลอร์หนึ่งตัวจากคอนโทรลเลอร์อื่นได้ ต่อไปนี้เป็นไวยากรณ์พื้นฐาน

class Controller_Employee extends Controller_Welcome { 
   // controller methods 
}

สิ่งนี้จะช่วยในการแบ่งปันวิธีการ

สร้างตัวควบคุม

เชื้อเพลิงมีตัวเลือกในการสร้างตัวควบคุมโดยใช้คำสั่งน้ำมัน ต่อไปนี้เป็นไวยากรณ์

ไวยากรณ์

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 มีตัวควบคุมประเภทต่างๆสำหรับวัตถุประสงค์ต่างๆ มีดังนี้ -

  • ตัวควบคุมฐาน
  • ตัวควบคุมเทมเพลต
  • ตัวควบคุมส่วนที่เหลือ
  • ตัวควบคุมแบบไฮบริด

ตัวควบคุมฐาน

คอนโทรลเลอร์เป็นตัวควบคุมพื้นฐานสำหรับคอนโทรลเลอร์ประเภทต่างๆทั้งหมดที่มีอยู่ใน FuelPHP มีฟังก์ชันพื้นฐานทั้งหมดที่จำเป็นในการดำเนินการตามคำขอของเว็บ รองรับการร้องขอการตอบกลับเซสชัน ฯลฯ เราจะใช้มันในตัวอย่างทั้งหมดเว้นแต่จะระบุไว้เป็นอย่างอื่น

ตัวควบคุมเทมเพลต

Template Controller เป็นส่วนเสริมของตัวควบคุมพื้นฐาน มีการรองรับเทมเพลตซึ่งกำหนดไว้ล่วงหน้าก่อน () และหลัง () วิธีการ โดยพื้นฐานแล้วสามารถใช้เพื่อรวมมุมมองของคุณในเค้าโครงด้วยส่วนหัวส่วนท้ายแถบด้านข้าง ฯลฯ ในการสร้างตัวควบคุมเทมเพลตเราจำเป็นต้องขยายคลาสController_Template ตามค่าเริ่มต้นเมธอดทั้งหมดของคลาสที่ขยายController_Templateจำเป็นต้องใช้เทมเพลต

มีกำหนดดังนี้

class Controller_Employee extends Controller_Template { 
   public function action_index() { 
      // add methods 
   } 
}

เราจะพูดคุยเพิ่มเติมเกี่ยวกับตัวควบคุมเทมเพลตในบทมุมมอง

ตัวควบคุมส่วนที่เหลือ

Rest Controller เป็นส่วนเสริมของ Base Controller มีการสนับสนุนที่กำหนดไว้ล่วงหน้าสำหรับการเขียนโปรแกรม REST API ซึ่งจะช่วยให้คุณสร้าง API ได้อย่างง่ายดาย

ในการสร้างตัวควบคุมส่วนที่เหลือคุณต้องขยายคลาสController_Rest มีกำหนดดังนี้

class Controller_Employee extends Controller_Rest { 
   public function action_index() { 
      // add methods 
   } 
}

เราจะพูดคุยเพิ่มเติมเกี่ยวกับตัวควบคุมส่วนที่เหลือในบท Ajax

ตัวควบคุมแบบไฮบริด

ตัวควบคุมไฮบริดดำเนินการทำงานของทั้งตัวควบคุม REST และตัวควบคุมแม่แบบในตัวควบคุมฐานเดียว