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 views và gọi views ở Controller. Các bạn lưu ý rằng nội dung của serie này sẽ đi từng bài, bài sau sẽ có sử dụng tài nguyên của bài trước nên nếu bạn không rõ thì hãy quay lại các bài trước nhé. 

Trong bài này sẽ sử dụng cấu trúc folder như sau:

project_name/
    /app/
       /cache/
       /config/
       /controllers/
       /models/
       /views/
    /public/
       /bootstrap/
       /css/
       /js/
    /index.php

1. Khai báo views trong Phalcon

Với cấu trúc folder như trên chúng ta sẽ khai báo các views nằm trong folder  app/views. Nhưng có lưu ý với các bạn rằng để Phalcon nhận diện ra views thì bạn phải tuân theo cấu trúc  sub folder của nó nhé, quy định như sau:

  • Mỗi controller sẽ có một folder ở views tương ứng với tên của nó
  • Các action sẽ có một file views với tên trùng với tên action, trường hợp ta không khai báo file này thì cũng không ảnh hưởng gì.
  • Phần đuôi của file view phải là .phtml, ví dụ index.phtml

Như vậy ví dụ ta có controller là IndexController và action indexAction thì view sẽ có đường dẫn là project_name/app/views/index/index.phtml. Cấu trúc như sau:

project_name/
    /app/
       /views/index/index.phtml

2. Load views trong Phalcon

Tạo controller

Bạn tạo một file controller mới tên là IndexController với nội dung như sau:

class IndexController extends \Phalcon\Mvc\Controller
{
    public function indexAction()
    {
        
    }
}

Tạo Views

Vì controller của chúng ta có tên là IndexController nên ta sẽ khai báo một folder index trong folder app/views, đồng thời bạn tạo mới một file index.phtml với nội dung như sau:

<h1>Hello World!</h1>
Lúc này cấu trúc folder chúng ta như sau:

project_name/
    /app/
       /controllers/
            IndexController.php
       /views/
            index/index.phtml
    /index.php

Chạy lên bạn sẽ thấy dòng chữ "Hello World!" xuất hiện trên màn hình.

3. Truyền dữ liệu từ controller sang view trong Phalcon

Để truyền dữ liệu từ controller sang view thì bạn dùng cú pháp như sau ở controller: $this->view->setVar('name', $data). Lúc này bên view bạn sẽ có một biến $name.

Bây giờ bạn chỉnh lại controller như sau:

class IndexController extends \Phalcon\Mvc\Controller
{
    public function indexAction()
    {
        $this->view->setVar("message", "Hello World!");
    }
}
Và chỉnh view lại như sau:

<?php echo $message; ?>
Refresh (F5) lại trình duyệt và xem kết quả bạn sẽ thấy cũng không có gì khác biệt.

4. Disable View trong Phalcon

Như bạn thấy mặc định Python sẽ gọi view cho chúng ta nếu ta làm theo cấu trúc của nó, như vậy có một số trường hợp ta không muốn gọi đến view đó thì như thế nào? Rất đơn giản, Phalcon cung cấp cho chúng ta một sự lựa chọn đó là sử dụng cú pháp $this->view->disable(); tại controller muôn áp dụng là xong.

Bây giờ bạn chỉnh lại controller một xíu như sau:

class IndexController extends \Phalcon\Mvc\Controller
{
    public function indexAction()
    {
        $this->view->setVar('message', 'Hello World!');
        $this->view->disable();
    }
}
Chạy lên bạn thấy màn hình không xuất hiện gì, lý do là ta đã disable view rồi nên nó sẽ không gọi đến view.

Lời kết

Phần view trong Phalcon cũng khá dài nên mình sẽ dừng tại đây, các bài nâng cao phía sau chúng ta sẽ tìm hiểu kỹ thuật master layouts trong Phalcon nhé. Bài tiếp theo chúng ta  sẽ tìm hiểu đến cách khai báo một Model và cách sử dụng nó ở mức căn bản nhất.

Tài liệu chỉ mang tính chất tham khảo, mình không cam kết các nội dung trên website, vì vậy không được sử dụng để in ấn hay kinh doanh.
Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website vi phạm nội dung bản quyền mà mình đã đưa ra.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Facebook để được hỗ trợ nhanh nhất.