Đăng ký nhận RSS Feed

<?php echo 'Welcome to my blog!' ?>

one true brace

viết về những thứ tớ quan tâm, thế là đủ

Bạn đang xem danh sách các bài viết mang từ khóa ‘cakephp’


Thủ thuật CakePHP, phần 1

Trong loạt bài viết (không thường xuyên) này, tớ sẽ tổng hợp một vài thủ thuật nhỏ liên quan đến CakePHP. Trong đó, tớ mặc định bạn đang sử dụng Cake 1.2 - phiên bản mới nhất tại thời điểm này là 1.2.0.7296 RC2.

1. counterCache

Như bạn có thể thấy, khi code với CakePHP, nếu tuân theo các quy ước liên quan đến việc đặt tên table, column, class…, bạn sẽ đỡ cho mình được rất nhiều công việc, ví dụ như xử lý các giá trị created - thời điểm tạo record, modified - thời điểm cuối record được sửa.

Check out “CakePHP Conventions” for more information, but suffice it to say that naming our table ‘posts’ automatically hooks it to our Post model, and having fields called ‘modified’ and ‘created’ will be automagically managed by Cake.

- Example Applications :: Blog

“Automagic” của Cake không dừng lại ở đó - bên cạnh các field created, modified, *_id, bạn có thể sử dụng field có tên dạng *_count để lưu số lượng record liên quan.

Một ví dụ đơn giản: Mỗi record trong table Comment có field post_id trỏ tới record liên quan trong table Post. Để đếm số lượng comment của một post nhất định, thay vì dùng findCount(), nghĩa là mất thêm 1 query, bạn chỉ việc xem giá trị field comment_count được Cake xử lý tự động.

Việc khai báo trong 2 file model post.php, comment.php đơn giản là:

class Post extends AppModel {
	var $hasMany = array('Comment');
}

class Comment extends AppModel {
	var $belongsTo = array(
		'Post' => array('counterCache' => true)
	);
}

Ổn đấy chứ?

Đọc tiếp →

Bài viết được gửi hôm 20.07.08 · Mang các từ khóa , · Phản hồi [4]


Làm back end trong CakePHP

Một trong những phần việc tớ luôn phải làm mỗi khi thực hiện một mini project bằng CakePHP là tạo khu vực back end để quản lý dữ liệu trong database. Trong bài viết này tớ muốn chia sẻ một chút kinh nghiệm liên quan, để giúp bạn phần nào giảm bớt được thời gian tìm kiếm thông tin nếu mới bắt đầu làm quen với Cake.

Tớ giả định bạn sử dụng Cake phiên bản 1.2 beta. Phiên bản 1.1 tớ không còn dùng nên không rõ những điều tớ viết có áp dụng với nó hay không.

1. Tách biệt front end và back end

a. Admin routing

Việc đầu tiên là tách biệt front end và back end thông qua admin routing. Chỉ việc uncomment dòng code Configure::write(’Routing.admin’, ‘admin’); trong file config/core.php là bạn đã có thể sử dụng tính năng này.

Với giá trị Routing.admin là ‘admin’, các action mang tiền tố ‘admin_’ trong các controller của bạn sẽ được coi là thuộc back end. Nghĩa là thay vì truy cập action đó bằng URL /controller/action, bạn sẽ sử dụng URL /admin/controller/action. Tương tự, nếu Routing.admin mang giá trị ‘acp’, các action của bạn sẽ cần có dạng acp_add, acp_edit, acp_delete…

b. Layout

Thường thì khu vực front end và back end sẽ mang layout khác nhau. Để thay đổi layout, tớ đặt điều kiện kiểm tra vào function beforeFilter() trong file app_controller.php:

function beforeFilter() {
  if (strpos($this->action, 'admin_') !== false) {
    $this->layout = 'admin';
  }
}

Không thuộc back end đồng nghĩa với action sẽ mang layout ‘default’.

Và nếu tớ không nhầm thì ngoài cách kiểm tra tiền tố, bạn còn có thể kiểm tra xem $this->params['admin'] có tồn tại hay không để xác định phạm vi action hiện tại.

c. Dashboard

Không biết bạn thế nào, chứ tớ hay làm thêm một controller mang tên dashboard, coi đó là điểm đến ngay khi người dùng phía back end login. Controller này không gắn với table nào trong database, tuy nhiên có thể sử dụng dữ liệu của các table khác (để hiển thị thông số thống kê chẳng hạn). Tớ khai báo biến $uses trong file dashboard_controller.php như thế này:

class DashboardController extends AppController {
  var $name = 'Dashboard';
  var $uses = array('User', 'Group');
}

Sau đó, tớ thêm một dòng vào file config/routes.php để gắn URL /admin với trang dashboard:

Router::connect('/admin', array('controller' => 'dashboard', 'action' => 'index', 'admin' => 1));

d. URL

Ở View, khi bạn đặt liên kết tới action nào, thường có thể sử dụng HTML helper:

echo $html->link('View this post', array('controller' => 'posts', 'action' => 'view', $post['Post']['id']))

Nếu đó là action phía back end, bạn cần sửa sang lại một chút:

echo $html->link('Edit this post', array('controller' => 'posts', 'action' => 'edit', $post['Post']['id'], 'admin' => 1))

Nhớ thay ‘admin’ bằng giá trị Routing.admin mà bạn đặt từ trước.

(Còn tiếp)

Bài viết được gửi hôm 03.03.08 · Mang các từ khóa , · Phản hồi [4]


Sách viết về CakePHP - Tại sao không?

CakePHP là một framework rất thú vị, nhưng một trong những điểm yếu của nó vẫn luôn nằm ở khía cạnh tài liệu. Với symfony, người ta có thể tìm thấy quyển The Definitive Guide to symfony; với CodeIgniter, đó là CodeIgniter for Rapid Php Application Development. Ngay cả Zend Framework, tuy xuất hiện chưa lâu nhưng cũng sắp xuất hiện một quyển sách viết về framework này - Guide to Programming with the Zend Framework. Trong trường hợp của Cake, cho đến nay dù có tìm đỏ mắt người ta cũng khó có thể tìm ra một cuốn sách tương tự.

Vấn đề là tại sao không có cuốn sách nào viết về CakePHP? Hay, dùng từ chính xác hơn, tại sao chưa có quyển sách nào viết về CakePHP?

Đó là một câu chuyện dài…

Đọc tiếp →

Bài viết được gửi hôm 14.01.08 · Mang các từ khóa , · Phản hồi [9]


CakePHP 1.2 Beta

Hôm nay, CakePHP team thông báo ra mắt phiên bản 1.2 Beta của framework này. Trang chủ cakephp.org cũng được thiết kế lại, đẹp và “ngon” hơn.

Thông tin chi tiết, cũng như những nhận xét ban đầu về phiên bản này, bạn có thể đọc thêm trong các bài viết:

Bài viết được gửi hôm 02.01.08 · Mang các từ khóa , · Phản hồi [2]


Cake 1.1 hay 1.2?

Bài viết này được chuyển từ blog cũ của tớ sang - __(’c4k3roxx’);

Một số thông tin cũ và/hoặc không còn chính xác (nếu có) sẽ được tớ cập nhật ở cuối bài.

CakePHP 1.1 và 1.2 khác nhau như thế nào? Nên chọn phiên bản nào để sử dụng? Đây chính là một vấn đề thường làm những người mới đến với CakePHP phân vân, khi họ thấy sự tồn tại của cả 2 phiên bản trên cakephp.org: Stable 1.1 và Development 1.2 alpha.

Trong bài viết này tớ sẽ đem so sánh Cake 1.1 với 1.2.

Đọc tiếp →

Bài viết được gửi hôm 30.08.07 · Mang các từ khóa · Phản hồi [2]