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 และตัวควบคุมแม่แบบในตัวควบคุมฐานเดียว