-----
Phần X3. CakePHP2
– MVC Layout Truy vấn
Xem (clip số 6 – chickenrainshop):
Cách gọi và truyền tham số cho action của một controller (phút
2:25).
Nhớ lại mô hình MVC, quá trình xử lý logic của một ứng dụng
web sẽ bắt đầu từ giao diện website của người dùng (client), cụ thể trong ví dụ
ở đây là bắt đầu từ thanh địa chỉ URL, dữ liệu sẽ được gửi từ client về
controller qua URL (client gửi request về server bằng phương thức get), sau đó
controller xử lý và trả lại kết quả về cho view, hệ thống sẽ gửi view này về
lại trình duyệt. Xem thêm hình dưới đây (https://book.cakephp.org/2.0/en/getting-started/a-typical-cakephp-request.html)
Đọc thêm để hiểu về hoạt động của mô hình MVC tại đây: https://techmaster.vn/posts/33903/giai-thich-ve-mo-hinh-mvc
Giới thiệu về việc xây dựng các chức năng người dùng và các
chức năng quản trị của một website (phút 4:40).
Định dạng URI của chức năng người dùng, và chức năng quản
trị (phút 6:51):
- Chức năng người dùng: /controller/action
- Chức năng quản trị: /admin/controller/action
Cách đặt tên action và view:
- Chức năng người dùng: function index(), index.ctp
- Chức năng quản trị: function admin_index(),
admin_index.ctp
Sử dụng layout (phút 8:36):
- Chức năng người dùng: default.ctp
- Chức năng quản trị: admin.ctp
Giới thiệu về layout và hoạt động của layout (phút 9:15).
Layout: là bố cục mặc định cho trang web, là cái khung cho
các trang web, các trang web cùng sử dụng một layout sẽ có bố cục giống nhau và
chỉ khác nhau phần nội dung riêng của từng trang, xem lại cái hình bên trên sẽ dễ hiểu hơn.
Phần nội dung riêng của từng trang (từng view) sẽ được gọi
bằng lệnh:
<?php echo $this->fetch(‘content’); ?> //nội dung
của view sẽ được đặt tại vị trí của câu lệnh này
Xem (clip số 7 – chickenrainshop):
Hai hàm dùng để truy vấn dữ liệu là: find và query (phút 0:00)
- find():
Gồm các kiểu (type) sau:
+ all: lấy tất cả các mẩu tin
+ first: lấy mẩu tin đầu tiên
+ list: giống all, tuy nhiên chỉ trả về danh sách id (cộng
thêm trường title hoặc name), tùy chọn này thường được sử dụng để lấy dữ liệu
từ một bảng và đưa ra element select của HTML (trong view).
+ count: trả về số mẩu tin thỏa yêu cầu
+ neighbor: trả về mẩu tin đứng trước và sau
+ threaded: dữ liệu có cấu trúc cây (dùng trong tree
behavior)
Các tùy chọn của hàm find():
+ fields: tên trường muốn lấy
+ conditions: điều kiện lấy
+ order: sắp xếp kết quả truy vấn
+ limit: giới hạn số lượng mẩu tin lấy
+ recursive: lấy theo mối quan hệ giữa các bảng, -1,0,1,2
- query(): cú pháp query(“SQL statement”)
Thực hành truy vấn trên CakePHP (phút 3:30)
Sử dụng hàm pr() và exit để xem kết quả truy vấn, giúp debug
và thực hiện các xử lý trên dữ liệu. (phút 4:11).
Ví dụ về recursive (phút 7:05):
-1: chỉ lấy dữ liệu của bảng hiện tại
0: hiển thị thêm dữ liệu của bảng mà bảng hiện tại có quan
hệ “belongsTo”
1: là giá trị mặc định, giống với giá trị 0, ngoài ra hiển
thị thêm dữ liệu của bảng có quan hệ
“hasMany” với bảng hiện tại.
2: tùy chọn này ít khi dùng, lấy tất cả dữ liệu mà hệ thống
tìm được.
Ví dụ về các tùy chọn truy vấn (phút 9:52)
Hàm truyvan(),
public function truyvan(){
$books
= $this->Book->find('first', [
'recursive'
=> -1,
'fields'
=> ['id', 'title']
]);
pr($books);exit;
}
Thêm điều kiện truy vấn, lấy cuốn sách có id = 2
public function truyvan(){
$books
= $this->Book->find('first', [
'recursive'
=> -1,
'fields'
=> ['id', 'title'],
'conditions'
=> [
'id'
=> '2'
]
]);
pr($books);exit;
}
Thêm điều kiện truy vấn, lấy các cuốn sách có id <= 2
public function truyvan(){
$books
= $this->Book->find('all', [
'recursive'
=> -1,
'fields'
=> ['id', 'title'],
'conditions'
=> [
'id
<=' => '2'
]
]);
pr($books);exit;
}
-----------
Cập nhật 22/4/2017
-----------