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 source về nó sẽ có hệ thống danh sách các folders theo cấu trúc của nó, chúng ta sẽ tuân theo cấu trúc đó và sử dụng. Nhưng đối với Phalcon thì nó hơi khác, chúng ta có thể tự mình tạo ra cấu trúc folder của ứng dụng riêng cho mình và sau đó sẽ cấu hình cho Phalcon hiểu mô hình chúng ta đang sử dụng.
Bình thường thì bạn sẽ dùng lệnh để tạo danh sách folder luôn nhưng trong bài này chúng ta sẽ tự mình tạo từng folder để dễ nắm bắt hơn.
1. Cấu trúc thông thường của Phalcon
Thông thường cấu trúc của Phalcon khi mới cài đặt và tạo tự động sẽ như sau:
project_name/
/app/
/cache/
/config/
/controllers/
/models/
/views/
/public/
/bootstrap/
/css/
/js/
Các bạn thấy cấu trúc nó không khác gì các Framework hiện nay như Codeigniter, Laravel đó là tuân theo mô hình MVC. Bây giờ các bạn tạo một các file như trên rồi chúng ta sẽ tiếp tục thực hành nhé.
Bài viết này được đăng tại [free tuts .net]
2. Cấu hình file bootstrap
File Bootstrap không phải là bộ Famework Twitter Bootstrap đâu nhé các bạn, đây là file mà ta có thể hiểu nó dùng để điều hướng, khởi tạo hệ thống của ứng dụng, tất cả các request sẽ được gọi tới file này và file này sẽ phân tích request, gọi đến controller phù hợp.
Bạn tạo file index.php
với đường dẫn như sau: project_name/index.php
, sau đó copy nội dung sau vào:
try { // Đăng ký Loader $loader = new \Phalcon\Loader(); $loader->registerDirs(array( 'app/controllers/', // Khai báo Folder Controller 'app/models/' // Khai báo models ))->register(); // Khởi tạo DI $di = new Phalcon\DI\FactoryDefault(); // Khởi tạo và khai báo thư mục view $di->set('view', function(){ $view = new \Phalcon\Mvc\View(); $view->setViewsDir('app/views/'); return $view; }); // Câu hình url tới project, vì mình nằm trong project_name nên phải khai báo $di->set('url', function(){ $url = new \Phalcon\Mvc\Url(); $url->setBaseUri('/project_name/'); return $url; }); // Khởi tạo ứng dụng $application = new \Phalcon\Mvc\Application($di); // Xử lý và hiển thị kết quả echo $application->handle()->getContent(); } catch(\Phalcon\Exception $e) { echo "PhalconException: ", $e->getMessage(); }
project_name/
/app/
/cache/
/config/
/controllers/
/models/
/views/
/public/
/bootstrap/
/css/
/js/
/index.php
3. Xóa bỏ file index.php bằng htaccess
Bước này khá là quan trong nếu bạn quan tâm đến vấn đề SEO dự án của bạn, vì như mình trình bày tất cả các request đều vào file index.php
nên trên URL bắt buộc chúng ta phải gõ thêm index.php
. Nhưng điều này không hay lắm vì nhìn rất phản cảm, chính vì vậy chúng ta sử dụng .htaccess để điều trị căn bệnh này của nó.
Bạn tạo file .htaccess có đường dẫn là project_name/.htaccess
với nội dung như sau:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
4. Ví dụ đầu tiên của Phalcon
Bạn tạo file IndexController.php
có URL là project_name/app/controllers/IndexController.php
với nội dung như sau:
class IndexController extends \Phalcon\Mvc\Controller { public function indexAction() { echo '<h1>Hello World!</h1>'; } }
IndexController
có kế thừa một lớp là Phalcon\Mvc\Controller
, vậy lớp này đâu ra? Câu trả lời đó là file ext_phalcon.dll
mà bạn đã import vào ở bài hướng dẫn cài đặt Phalcon trên window đấy. Lúc này cấu trúc Folder của chúng ta như sau:
project_name/
/app/
/cache/
/config/
/controllers/
/IndexController.php/
/models/
/views/
/public/
/bootstrap/
/css/
/js/
/index.php
Bây giờ bạn chạy lên và gõ vào đường dẫn URL http://localhost/project_name/index/index
thì màn hình sẽ xuất hiện chữ "Hello World!". Trong URL trên thì:
- Index màu xanh là tên Controller (IndexController)
- Index màu đỏ là tên phương thức index (indexAction)
Hoặc bạn gõ với URL là: http://localhost/project_name
thì kết quả vẫn tương đương, lý do là chúng ta không truyền vào tham số controller và action nên nó sẽ tự đông gọi đến Controller index
và Action index
.
Lời kêt
Bài này chúng ta chỉ tìm hiểu mô hình cấu trúc folder trong ứng dụng Phalcon thôi chứ chưa đề cập đến mô hình MVC nhé, bài tiếp theo chúng ta sẽ tìm hiểu đến các thành phần này như các tạo controller, các tạo views, cách gọi views và tạo model trong phalcon một cách chi tiết nhất.