HỌC PHALCON CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 06: Tạo template dùng chung trong Phalcon

Trong Phalcon ngoài Main Template thì nó còn có một chức năng tạo một Template có thể được dùng cho toàn site, đây là một chức năng khá hay mà mình thấy không có trong Codeigniter Framework, áp dụng vào dự án thì còn gì bằng cheeky

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Tạo cấu trúc Layouts trước tiên

Trước tiên chúng ta quay lại cấu trúc folder hôm trước đã nhé.

project_name/
    /app/
       /cache/
       /config/
       /controllers/
            /NewsController.php
       /models/
       /views/
            /layouts/
                /news.phtml
            /news/
                /detail.phtml
                /newslist.phtml
            /index.phtml    
    /public/
       /css/
       /js/
    /index.php

Đây chính là sơ đồ cấu trúc folder của bài mô hình layouts của View trong Phalcon, nội dung như thế nào thì bạn quay lại và xem nhé.

2. Tạo template dùng chung trong Phalcon.

Như mô hình layouts trên thì mỗi khi chương trình chạy thì Controller sẽ xem xét và load Main Layout trước, nếu trong Main Layout có load child content thì nó sẽ tiêp tục load Controller Layout, tương tự nếu Controller Layout có load child content thì nó sẽ tiếp tục load Action View. Nghĩa là quy trình load sẽ là Main Layout -> Controller Layout -> Action View

Bài viết này được đăng tại [free tuts .net]

Nhưng nếu ta khai báo template thì nó sẽ có một cách load hơi khác chút xíu như sau: Main Layout -> Template -> Controller Layout -> Action View. Ta làm ngay cho nóng nhỉ blush

Bạn tạo thêm một file tên là shared.phtml nằm trong folder app/views/layouts/.

project_name/
    /app/
       /views/
            /layouts/
                /news.phtml
                /shared.phtml

Bạn mở file shared.phtml lên và gõ nội dung sau vào:

<h2>TRANG LAYOUT CỦA CONTROLLER</h2>

Tiếp theo mở NewsController.php lên và sửa lại như sau:

class NewsController extends Phalcon\Mvc\Controller {
    
    public function detailAction(){
        $this->view->setTemplateAfter('shared');
    }
    
    public function newslistAction(){
        $this->view->setTemplateAfter('shared');
    }
}

Ra trình duyệt gõ đường dẫn:

  • http://localhost/project_name/news/detail
  • http://localhost/project_name/news/newslist

Và bạn sẽ thấy kết quả nó có load file shared.phtml trước rồi mới đến các file Controller LayoutAction View phải không nào. Như vậy cơ chế của nó không có gì khác biệt, nếu bỏ đoạn code $this->view->setTemplateAfter('shared'); thì nó sẽ không chạy file shared.phtml.

Có một lưu ý là bạn đặt đoạn code <?php echo $this->getContent(); ?> vào file shared.phtml thì nó mới load tiếp các mức còn lại nhé. Và nếu trong tất cả các action đều sử dụng template này thì bạn có thể đặt nó trong hàm khởi tạo có tên là initialize.

class NewsController extends Phalcon\Mvc\Controller {
    
    // Thêm ham này
    public function initialize(){
        $this->view->setTemplateAfter('shared');
    }
    
    public function detailAction(){
        
    }
    
    public function newslistAction(){
        
    }
}

Có thể bạn thắc mắc tại sao không đặt trong hàm khởi tạo (construct), lý do là trong Phalcon hàm khởi tạo đó đã ở dạng final nên không thể rewrite lại được nữa, thay vào đó nó cung cấp hàm initialize để thay thế.

Và cuối cùng ta có kết luận như sau:

  • Ta sử dụng hàm $this->view->setTemplateAfter('template_name'); để load template với tham số là tên của template
  • Các file template phải đặt trong folder app/view/layouts

# Lời kết

Cơ chế template này giúp chúng ta có thể quản lý các template một cách tốt hơn nên các bạn nên áp dụng nó vào ứng dụng nếu cần thiết. Bài này cũng tương đối ngắn nhưng mình viết hơi dài dòng là vì mình muốn bạn hiểu bản chất của nó. Cám ơn vì đã đọc tuts của mình.

Cùng chuyên mục:

Bài 05: Mô hình layouts của views trong Phalcon

Bài 05: Mô hình layouts của views trong Phalcon

Nếu bạn đã từng nghiên cứu qua Codeigniter Framework thì bạn sẽ thấy điểm yếu…

Bài 04: Thao tác với Views trong Phalcon

Bài 04: Thao tác với Views trong Phalcon

Tiếp theo bài trước, trong bài này chúng ta sẽ tìm hiểu cách khai báo…

Bài 03: Thao tác với Controller trong Phalcon

Bài 03: Thao tác với Controller trong Phalcon

Phalcon hoạt động theo mô hình MVC nên nó sẽ có một file index.php làm…

Bài 02: Xây dựng cấu trúc folder cho ứng dụng phalcon

Bài 02: Xây dựng cấu trúc folder cho ứng dụng phalcon

Nếu bạn đã từng tìm hiểu qua các Framework khác thì thông thường khi download…

Bài 01: Download và cài đặt Phalcon trên Window

Bài 01: Download và cài đặt Phalcon trên Window

Hiện nay có rất nhiều PHP Framwork nên việc lựa chọn cho mình một Framwork…

Top