Bài 03: Thao tác với Controller trong Phalcon
0
Google +0
0
Đăng bởi: TheHalfHeart - Vào ngày: 28-12-2014 - Chuyên mục: Phalcon - View: 1194
Download
Phalcon hoạt động theo mô hình MVC nên nó sẽ có một file index.php làm file bootstrap, file này có nhiệm vụ khai báo thư viện, cấu trúc của ứng dụng Phalcon. Điều này rất khác với các Framwork khác là khi download về nó đã có sẵn mô hình cho chúng ta sử dung nhưng với Phalcon thì bạn hoàn toàn có thể tạo cấu trúc cho riêng mình (nhưng vẫn hoạt động theo mô hình MVC).
Trước khi vào vấn đề chính tìm hiểu Controller thì ta quay lại bài xây dựng cấu trúc folder cho ứng dụng phalcon để xem cấu trúc nó như sau:
project_name/
/app/
/cache/
/config/
/controllers/
/models/
/views/
/public/
/bootstrap/
/css/
/js/
/index.php
Trong bài này chúng ta sẽ tìm hiểu phần đầu tiên trong mô hình MVC đó là Controller trong Phalcon.
1. Khai báo Controller trong Phalcol
Với cấu trúc folder ở trên thì tất cả các controller trong Phalcon chúng ta sẽ đặt trong folder app/controllers, lý do là ở file index.php (file bootstrap) chúng ta có khai báo đoạn mã:
1 2 3 4 5 |
$loader = new \Phalcon\Loader(); |
Cấu trúc folder lúc này như sau:
project_name/
/app/
/cache/
/config/
/controllers/
/ProductController.php
/models/
/views/
/public/
/bootstrap/
/css/
/js/
/index.php
Cũng như các Framwork khác thì tên controller cũng phải có nguyên tắc riêng của nó. Với Phalcon thì tên file controller sẽ có dạng là NameController.php, trong đó:
- Name là tên của controller
- Controller là hậu tố để phân biệt với các lớp khác (tránh trùng tên class)
Cũng giống như đặt tên file, việc khai báo tên class của controller cũng phải có nguyên tắc là sẽ giống như tên file vậy, ví dụ:
1 2 3 4 |
class IndexController extends \Phalcon\Mvc\Controller |
Trong controller có đoạn code kế thừa từ lớp \Phalcon\Mvc\Controller, đây chính là thư viện của Phalcon nên chúng ta không quan tâm nó.
2. Khai báo Action của Controller trong Phalcon
Để khai báo action chúng ta dùng cú pháp như sau:
1 2 3 4 |
public function nameAction() } |
Trong đó chữ Action là mặc định luôn luôn có, chúng ta chỉ đổi chữ name thôi.
3. Ví dụ Tạo Controller mới trong Phalcon
Tham số controller là gì?
Tham số của controller chính là các giá trị bạn muốn truyền vào Controller để Controller nhận và xử lý. Ví dụ bạn truy cập vào đường dẫn http://localhost/project_name/controller/action/param1/param2 thì:
- controller: Là tên controller
- action: là tên action
- param1: là tham số 1 của action
- param2 là tham số 2 của action
Giả sử bạn viết trang hiển thị chi tiết bài viết thì ta sẽ truyền ID bài viết vào Action để Action lấy ID đó và truy vấn dữ liệu, lúc này URL ta có dạng như http://localhost/news/detail/2 thì:
- news: tên controller
- detail: tên action
- 2: là tham số có giá trị là 2
Trường hợp không có tham số
Bây giờ chúng ta sẽ thực hành tạo các controller và action mới, trước tiên bạn tạo file ProductController.php nằm trong folder app/controllers. Sau đó điền nội dung sau vào:
1 2 3 4 5 6 7 |
class ProductController extends \Phalcon\Mvc\Controller |
Bây giờ bạn mở trình duyệt và chạy URL là localhost/project_name/product/index, lúc này trên trình duyệt sẽ xuất hiện dòng "Index Action". Bây giờ bạn thử chạy với URL là localhost/project_name/product thì kết quả vẫn tương đương, lý do là do ta không truyền Action vào nên nó tự lấy Action mặc định là index.
Như vậy để gọi tới một Controller và Action nào đó thì trên URL ta chỉ việc truyền theo cú pháp: domain.com/controllerName/actionName
Trường hợp có tham số
Cũng giống như các Framwork khác, để truyền tham số vào controller thì bạn sẽ làm các bước như sau:
- Tại action ta khai báo các tham số truyền vào actionName(thamso1, thamso2, thamso3)
- Trên URL ta truyền thêm các tham số theo cú pháp domain.com/controllerName/actionName/thamso1/thamso2/thamso3 ..., số lượng tham số khôn giới hạn, tùy thuộc vào action của bạn có bao nhiêu.
Ví dụ: bạn thay đổi một chút trong controller ProductController trên:
1 2 3 4 5 6 7 |
class ProductController extends \Phalcon\Mvc\Controller |
Nào bây giờ bạn chạy lên với đường dẫn là: localhost/project_name/product/index/hoc/lap/trinh và kết quả sẽ in ra trình duyệt là "hoc lap trinh"
Nếu bạn truyền URL không đủ tham số thì sẽ báo lỗi đấy, lý do là tham số truyền vào mình không gán giá trị mặc định (Default Value) cho nó, bây giờ bạn chỉnh lại như sau là OK:
1 2 3 4 5 6 7 |
class ProductController extends \Phalcon\Mvc\Controller |
Lời kết
Các bạn thấy Phalcon cũng không khó phải không nào, nếu bạn đã từng học qua một Framework khác thì nó quá là đơn giản, nhưng nếu bạn chưa từng học Framework nào thì nó là cơn ác mộng với bạn đấy vì ta không biết trong bộ thư viện của nó có gì.
Bài này mục đích giới thiệu các hoạt động của Controller trong Phalcon, chúc các bạn học tốt nhé.
0 nhận xét:
Đăng nhận xét