Bạn đang xem danh sách các bài viết mang từ khóa ‘code’
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 cakephp, code · Phản hồi [4]
Security bug của WordPress 2.3.1
Bug này được Michael Brooks report trên SecurityFocus hôm 14.12, và hiện có hiệu lực trên phiên bản WordPress mới nhất - 2.3.1.
Bất kỳ ai cũng có thể lợi dụng bug này để xem các bài viết chưa được đăng trong một blog WordPress bất kỳ. Đó có thể là bài viết ở dạng Draft, Future hay Pending - tất cả đều hiện lên trước mắt chỉ bằng một query đơn giản dạng http://example.com/index.php/wp-admin/.
Gốc của bug nằm tại hàm is_admin(), được khai báo trong file wp-includes/query.php - dòng 34:
function is_admin () {
global $wp_query;
return ($wp_query->is_admin || (stripos($_SERVER['REQUEST_URI'], 'wp-admin/') !== false));
}
Hàm này sau được dùng để tạo query hiển thị các bài viết, vẫn file wp-includes/query.php - dòng 1172.
if ( is_admin() ) $where .= " OR post_status = 'future' OR post_status = 'draft' OR post_status = 'pending'";
Được biết bug này sẽ được fix trong phiên bản 2.3.2 sắp tới.
Bài viết được gửi hôm 28.12.07 · Mang các từ khóa code, security, wordpress · Phản hồi [3]
Nói thêm về 360xport
Ở Phần I - Chuyển nội dung blog Yahoo! 360 sang WordPress với 360xport, tớ đã giới thiệu qua về 360xport. Phần II sẽ nói rõ hơn về script này.
1. Về trình duyệt và cách thức khởi động 360xport
Tớ code và test 360xport chủ yếu trên Firefox 2.0.0.11, do đó chỉ có thể đảm bảo script chạy tốt trên trình duyệt này. Tớ có thử qua script trên Internet Explorer 6+ và Opera 9, tuy chưa phát hiện lỗi nhưng ai biết đấy là đâu? Do đó, nếu bạn định dùng 360xport, tớ khuyến cáo sử dụng Firefox.
Để khởi động 360xport, bước đầu tiên bạn phải truy cập blog mình muốn export - mục Blog và không phải Top Page, nếu không script sẽ không hoạt động. Bạn cũng có thể truy cập một trang bất kỳ trong blog, không nhất thiết phải là trang đầu; tuy nhiên trong trường hợp đó 360xport sẽ chỉ export các entry từ trang đó trở về trước. Chú ý: “Trang” ở đây là trang list nhiều hơn một bài viết, không phải entry đơn lẻ.
Blog đó có thể của bạn, có thể của bất kỳ ai. Blog đó có thể public, có thể private. Bạn có thể login vào Yahoo!, có thể không. 360xport không quan tâm đến những điều đó. Chỉ cần bạn có thể đọc được blog đó trên màn hình, thì 360xport cũng sẽ “đọc” được. Đơn giản là vậy.
Bài viết được gửi hôm 02.12.07 · Mang các từ khóa 360xport, code, wordpress, yahoo 360 · Phản hồi [18]
Chuyển nội dung blog Yahoo! 360 sang WordPress với 360xport
Đoạn code để khởi động 360xport:
javascript:var jqr = document.createElement(%22script%22); jqr.setAttribute(%22src%22,%22http://onetruebrace.com/360xport/jquery.js%22); void(document.getElementsByTagName(%22head%22)[0].appendChild(jqr));var xp = document.createElement(%22script%22); xp.setAttribute(%22src%22,%22http://onetruebrace.com/360xport/360xport.js?qad=%22 + new Date().getTime()); void(document.getElementsByTagName(%22head%22)[0].appendChild(xp));
Nói ngắn gọn thì 360xport giúp người dùng chuyển nội dung blog Yahoo! 360 đang có sang blog WordPress.
Nói dài dòng hơn một chút thì người dùng sẽ sử dụng 360xport để tạo một file XML chứa toàn bộ nội dung blog Yahoo! 360 - các entry, comment, tag - và đem nó import vào WordPress thông qua tính năng Import trong Admin Panel.
Nói cụ thể hết mức thì… mời xem screenshot minh họa (bấm vào screenshot để xem full version).
Bài viết được gửi hôm 02.12.07 · Mang các từ khóa 360xport, code, wordpress, yahoo 360 · Phản hồi [29]
Custom Smilies 1.2
Custom Smilies has been taken over by Crazy Loong and a WP 2.5-compatible version could be found at his blog: http://goto8848.net/2008/05/custom-smilies-20/
Bài viết được gửi hôm 28.11.07 · Mang các từ khóa code, custom smilies, plugin, wordpress · Phản hồi [212]