Bạn tạo một file tên là
Base_Controller.php nằm trong thư muc admin/core, sau đó copy nội dung sau vào:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!');class Base_Controller extends FT_Controller{ public function __construct() { parent::__construct(); } public function load_header() { // Load nội dung footer } public function load_footer() { // Load nội dung header } // Hàm hủy này có nhiệm vụ show nội dung của view, lúc này các controller // không cần gọi đến $this->view->show nữa public function __destruct() { $this->view->show(); }} |
Ở
Base_Controller mình tạo các hàm load_header, load_footer và đặc biệt là ở hàm hủy mình có gọi đến phương thúc$this->view->show() và đây chính là phương thức hiển thị view ra trình duyệt mà ta đã sử dụng rất nhiều lần rồi. Riêng ở hàm khởi tạo __construct() bắt buộc bạn phải gọi tới hàm khởi tạo của lớp cha nhé (parent::__construct()).
Nhiệm vụ bây giờ của chúng ta là làm thế nào để sử dụng được
Base_Controller? 2. Load Base_Controller trong hàm FT_Load()
Quay lại file
FT_Common.php nằm trong thư mục system/core. Bạn mở file này lên và tìm đến hàm FT_Load() sau đó tìm đến dòng 28 có đoạn code load FT_Controller như sau:
1
| include_once PATH_SYSTEM . '/core/FT_Controller.php'; |
Bây giờ ta bổ sung thêm một đoạn code bên dưới dòng đó nhé.
1
2
3
4
5
6
7
| // Include controller chính để các controller con nó kế thừainclude_once PATH_SYSTEM . '/core/FT_Controller.php';// Load Base_Controllerif (file_exists(PATH_APPLICATION . '/core/Base_Controller.php')){ include_once PATH_APPLICATION . '/core/Base_Controller.php';} |
Ok mọi chuyện vậy là xong rồi. Nhưng có một lưu ý là sau khi bổ sung thư viện này thì ở các controller bạn không phải kế thừ
FT_Controller nữa mà sẽ kế thừa Base_Controller nhé.
Ví dụ:
1
2
3
4
5
6
7
| class Layout_Controller extends Base_Controller{ public function indexAction() { }} |
3. Ví dụ sử dụng Base_Controller
Bạn tạo một controller tên là
Product_Controller và copy nội dung sau vào:
1
2
3
4
5
6
7
8
9
| <?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!');class Product_Controller extends Base_Controller{ public function indexAction() { $this->view->load('product'); }} |
Tiếp theo bạn tạo một view tên là
product.php và copy nội dung sau vào:
1
2
3
4
5
6
7
8
9
10
| <!DOCTYPE html><html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>Đây là trang sản phẩm</h1> </body></html> |
Bây giờ bạn ra trình duyệt nhập URL là http://localhost/mvc/admin.php?c=product thì sẽ xuất hiện dòng chữ như sau tức là controller đã chạy đúng:
Bạn cần chú ý những vấn đề sau:
- Trong
Product_Controllermình đã kế thừa lớpBase_Controllernên tất cả các phương thức trongBase_Controllerđều có thể sử dụng được nhé. - Trong action index mình không cần gọi tới phương thức
$this->view->show()nữa bởi vì ởBase_Controllerta đã gọi tới nó ở hàm hủy__destruct().
Và sau đây là cấu trúc folder cho tới bài hôm nay.

0 nhận xét: