Đă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à đủ

Làm back end trong CakePHP

Bài viết bạn sắp đọc thuộc loạt bài Làm back end trong CakePHP

  1. 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 ,

Blog và những thứ thừa thãi
Từ Lightbox đến Slimbox &rarr

Bài viết liên quan:


4 phản hồi

  1. Sống khỏe gửi hôm 04.03.08 lúc 8:42 am #

    Chào bạn, mời bạn trao đổi link 2 web site. Link trang bạn đang nằm ở trang mình.

    http://songkhoe.byethost13.com

  2. QAD gửi hôm 04.03.08 lúc 10:15 pm #

    @Sống khỏe: Comment của bạn bị blog tớ nhận là spam.

    Hiện giờ tớ không tiến hành trao đổi link, sorry bạn nhé.

    Rất vui được làm quen.

  3. loan gửi hôm 12.05.08 lúc 7:15 am #

    anh post tiep di

  4. truonglq gửi hôm 19.06.08 lúc 10:16 am #

    Bạn post tiếp hướng dẫn đi. Mình đang học cakephp mà ít tài liệu quá. Mong được học hỏi kinh nghiệm của bạn!

Gửi phản hồi




Gõ tiếng Việt: Tự động TELEX VNI Off


Đăng ký nhận email dù không gửi phản hồi