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:
Bài viết này được đăng tại [free tuts .net]
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>
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!"); } }
<?php echo $message; ?>
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(); } }
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.