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.php3. 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.phpBâ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.

Xây dựng chức năng đăng nhập và đăng ký với php và mysql
Bảng mã ASCII chuẩn các hệ nhị phân - thập phân - thập lục phân
Cách khai báo biến trong PHP, các loại biến thường gặp
Bài 26: Hàm isset() và empty() trong php
Các kiểu dữ liệu trong PHP và các loại biến tương ứng
Bài 19: Phương thức GET và POST trong php
Download và cài đặt Vertrigo Server
Bài 20: Các hàm xử lý chuỗi trong php
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng