3. NỘI DUNG TRÌNH BÀY
1 GIỚI THIỆU CAKEPHP
2 MÔ HÌNH MVC TRONG CAKEPHP FRAMEWORK
1
4. 1. GIỚI THIỆU CAKEPHP
CakePHP là một Framework phát triển ứng dụng
web mã nguồn mở. Mục tiêu chính là cho phép
bạn làm việc một cách nhanh chóng và có cấu
trúc mà không làm mất tính linh hoạt.
CakePHP được cấp phép theo giấy phép MIT. Có
nghĩa là bạn được tự do sửa đổi, phân phối và
phát hành lại mã nguồn với điều kiện là bản
quyền còn nguyên vẹn. Bạn cũng được miễn phí
để kết hợp CakePHP vào bất kỳ ứng dụng
thương mại hoặc ứng dụng mã nguồn đóng.
2
5. 1. GIỚI THIỆU CAKEPHP
3
Đặc điểm nổi bật:
- Mã nguồn mở, miễn phí
- Xây dựng theo mô hình MVC
- Xây dựng nhiều thư viện hỗ trợ cho View
như: Ajax, HTML Form, Javascrip….
- Xây dựng nhiều thư viện hỗ trợ cho Controller:
Email, Session, Cookies…
- Kiểm tra rang buộc dữ liệu.
6. 1.GIỚI THIỆU CAKEPHP
THỨ HẠNG CỦA CAKEPHP
Số Thứ Tự Hot PHP Framework Ranking PHP Framework
1 Yii Yii
2 CodeIgniter PHPOpenbiz
3 CakePHP CodeIgniter
4 Zend CakePHP
5 Symfony Symfony
6 PHPDevShell PHPDevShell
7 Prado Prado
8 Akelos Akelos
9 ZooP Zend
10 QPHP eZ Components
4
7. 1.GIỚI THIỆU CAKEPHP
Một số website ứng dụng framework CakePHP
Website Teamspeak.net
5
8. 1.GIỚI THIỆU CAKEPHP
Một số website ứng dụng framework CakePHP
Website followmy.tv
6
9. 2. MVC TRONG CAKEPHP
(1): Yêu cầu của người dung được gửi
đến Controller
(2): Controller sẽ xử lý yêu cầu(thêm,
cập nhật….) và gọi tới Model để truy
cập dữ liệu.
(3): Model sẽ thực hiện yêu cầu của
Controller bằng cách lấy cập nhật hoặc
lưu trữ dữ liệu và trả lời cho Controller.
(4): Sau đó Controller sẽ trả dữ liệu
đầu ra đến View.
(5): View sẽ thể hiện kết quả của yêu
cầu người dùng ra với một định dạng
xác định.
7
Sơ đồ hoạt động của mô hình MVC
10. 2. MVC TRONG CAKEPHP
8
2.1 View
View là những dữ liệu đầu ra hay gọi là dữ liệu trả về cho
người dùng khi một yêu cầu được thực thi. Nó cơ bản
chứa những đoạn mã HTML nhúng với các đoạn mã PHP.
View được xem giống như tầng đại diện cho bộ mặt của
ứng dụng. Không thể gọi View một cách trực tiếp mà phải
thông qua Controller.
Một số thư viện hỗ trợ cho view như: FormHelper,
HTMLHelper…
11. 2. MVC TRONG CAKEPHP
9
2.1.1 FormHelper
- Tạo Form:
<?php echo $this->Form->create('Nhacungcap',
array(‘inputDefaults’ => array(‘div’ =>false))); ?>
Trong đó:
• inputDefaults: thiết lập giá trị mặc định cho các input
của Form như bỏ đi lable hay div trong Form.
• type: phương thức của Form, có thể là get, post,
file(dùng trong file Upload).... Mặc định của type là
post.
• action: sử dụng để xử lý dữ liệu, action trong Cakephp
được viết thành function nằm trong Controller.
- Kết thúc Form: <?php echo $this->Form->end();?>
12. 2. MVC TRONG CAKEPHP
2.1.1 FormHelper
- Ngoài ra còn sử dụng một số input phổ biến:
10
• textbox:
Cách 1: <?php echo $this->Form->textbox(‘vidu’); ?>
Cách 2: <?php echo $this->Form->input(‘vidu’, array(‘type’
=> ‘text’, ‘name’ => ‘vidu’));?>
• textarea:
Cách 1: <?php echo $this->Form->textarea(‘textarea’)?>
Cách 2: <?php echo $this->Form->input(‘textarea’,
array(‘type’ => ‘textarea’, ‘name’ => ‘textarea’)); ?>
• password:
Cách 1: <?php echo $this->Form->password(); ?>
Cách 2: <?php echo $this->Form->input(‘password’,
array(‘type’ => ‘password’, ‘name’ => ‘password’));?>
13. 2. MVC TRONG CAKEPHP
11
2.1.2 HTMLHelper
Vai trò của HtmlHelper trong CakePHP là thực hiện những
tùy chọn liên quan đến HTML nhanh hơn, dễ dàng hơn và
dễ thay đổi.
Sau đây là một số phương thức của HtmlHelper và cách sử
dụng:
• HtmlHelper::charset()
• HtmlHelper::css()
• HtmlHelper::docType()
• HtmlHelper::image()
• HtmlHelper::link ()
• HtmlHelper::script()
14. 2. MVC TRONG CAKEPHP
12
2.1.2.1 HtmlHelper::charset($charset==null)
Sử dụng để tạo thẻ meta, mặc định là UTF-8.
Cú pháp:
<?php echo $this->Html->charset(); ?>
Kết quả:
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
16. 2. MVC TRONG CAKEPHP
14
2.1.2.3 HtmlHelper::doctype(string $type=‘xhtml-stric’)
$type: loại doctype được sử dụng
Các loại doctype:
Loại Mô tả
html4-strict HTML4 Strict
html4-trans HTML4 Transitional
html4-frame HTML4 Frameset
html5 HTML5
xhtml-strict XHTML1 Strict
xhtml-trans XHTML1
Transitional
xhtml-frame XHTML1 Frameset
xhtml11 XHTML1.1
Ví dụ:
<?php echo $this->Html->
docType(); ?>
<?php echo $this->Html->
docType(‘html5’); ?>
<?php echo $this->Html->
docType(‘html4-trans’); ?>
17. 2. MVC TRONG CAKEPHP
2.1.2.4 HtmlHelper::image(string $path, array options=array())
15
Tạo ra một thẻ định dạng hình ảnh. Trong đó:
• $path: đường dẫn đến hình ảnh
• $options(array): mảng các tùy chọn
Ví dụ:
<?php echo $this->Html->image('cake_logo.png'); ?>
Kết quả:
<img src="/img/cake_logo.png"/>
18. 2. MVC TRONG CAKEPHP
2.1.2.5 HtmlHelper::link($title, $url=null, array options=array(),
$confirmMessage=false)
16
Trong đó:
• $path: Tên liên kết
• $options(array): mảng các tùy chọn của HTML
• $url: đường dẫn
Ví dụ:
<?php echo $this->Html->link('Delete',array('controller' => 'recipes',
'action' => 'delete', 6),array(),"Bạn chắc muốn xóa?"); ?>
Kết quả:
<a href="/recipes/delete/6" onclick="return confirm('Bạn chắc muốn
xóa?');">Delete</a>
19. 2. MVC TRONG CAKEPHP
2.1.2.6 HtmlHelper::script($url=null, array options=array())
17
Trong đó:
• $url: đường dẫn đến một file javascript hay nhiều file
javascript
• Options: mảng các tùy chọn HTML
Ví dụ:
<?php echo $this->Html->script(‘scripts’); ?>
Kết quả:
<script type="text/javascript" href="/js/scripts.js"></script>
20. 2. MVC TRONG CAKEPHP
17
2.1.3 SessionHelper
Khai báo Session: var $helper=array(‘Session’);
Gọi sử dụng: $session -> method();
Các phương thức chính:
• read($key): Đọc Session. Trả về một chuỗi hoặc một
mảng tùy vào nội dung Session.
• check($key): Kiểm tra sự tồn tại của Session.
• error(): Xác định lỗi liên quan đến Session.
• flash($key= ‘flash’, array $params=array()): Hiển
thị thông báo.
21. 2. MVC TRONG CAKEPHP
18
2.2 Model
Model là những lớp được xây dựng nhằm trao đổi thông
tin với cơ sở dữ liệu. Một lớp Model có thể thực hiện các
tác vụ truy vấn thêm, xóa, cập nhật dữ liệu.
Model nằm trong thư mục /app/Model chứa mã nguồn
ứng dụng. Model chứa các file Model, Behavior,
Datasource.
Cách khai báo Model:
class TenModel extends AppModel
{
…………………….
}
22. 2. MVC TRONG CAKEPHP
19
2.2.1 Lấy dữ liệu
Dùng hàm find($type, $param)
Cú pháp: <?php $this->Model->find($type, $params); ?>
Trong đó:
• $type: phương thức truy vấn dữ liệu. Có thể là
‘all’, ‘first’, ‘list’, ‘count’, ‘neighbors’, ‘threaded’. Giá
trị mặc định là ‘first’.
• $param: mảng tập hợp các điều kiện lấy dữ liệu,
gom cụm dữ liệu, sắp xếp hoặc thể hiện dữ liệu
23. 2. MVC TRONG CAKEPHP
20
2.2.1 Lấy dữ liệu
Dùng hàm find($type, $param)
Một số tùy chọn $param:
array(
'conditions' => array('Model.field' => $thisValue), //mảng các điều
kiện tìm kiếm
'recursive' => 1,// la mot gia tri so nguyen, co the la -1, 0, 1 hoac 2
'fields' => array('Model.field1', 'DISTINCT Model.field2'),//mang cac
cot du lieu muon lay ra
'order' => array('Model.created', 'Model.field3 DESC'), //menh de
ORDER BY sap xep thu tu ket qua sau khi tim kiem la tang dan (ASC)
hoac giam dan (DESC)
group' => array('Model.field'), //menh de GROUP BY
'limit' => n, //so nguyen
'page' => n, //so nguyen
'offset'=>n, //so nguyen
'callbacks' => true //cac gia tri bao gom true, false, 'before', 'after‘
)
24. 2. MVC TRONG CAKEPHP
21
2.2.1 Lấy dữ liệu
Dùng hàm find($type, $param)
find(‘all’): trả về tất cả kết quả tìm được
Cú pháp: <?php $this->Model->find(‘all’); ?>
Ví dụ 1: Tìm tất cả thành viên trong bảng User
<?php $this->User->find(‘all’); ?>
Ví dụ 2: Tìm thành viên với id=2
<?php
$this->User->find(‘all’, array(‘conditions’ => array(User.id =>2)));
?>
find(‘first’): trả về một kết quả duy nhất
Cú pháp: <?php $this->Model-> find(‘first’); ?>
Ví dụ: Tìm thành viên. Trả về với thành viên có id=1
<?php $this->User->find(‘first’); ?>
25. 2. MVC TRONG CAKEPHP
22
2.2.1 Lấy dữ liệu
Dùng hàm find($type, $param)
find(‘count’): kết quả trả về là một số nguyên
Cú pháp: <?php $this->Model->find(‘count’); ?>
Ví dụ : Đếm tất cả thành viên
<?php $this->User->find(‘count’); ?>
find(‘list’): trả về một mảng danh sách thường dùng
trong input của dropdown hay selectbox
Cú pháp: <?php $this->Model-> find(‘list’); ?>
Ví dụ: Hiển thị list username
<?php $this->User->find(‘list’); ?>
Kết quả:
array([1] => user1, [2] =>user2)
26. 2. MVC TRONG CAKEPHP
23
2.2.1 Lấy dữ liệu
Dùng hàm find($type, $param)
find(‘neighbor’): tương tự như find(‘list’), nhưng kết quả
trả về là kết quả đứng trước và đứng sau
Cú pháp: <?php $this->Model->find(‘neighbor’, $param); ?>
Ví dụ:
<?php $this->User->find(‘neighbor’, array(‘field’ =>’id’, ‘value’=>2));?>
Kết quả:
array(
[prev] => array([User] =>array([id] => 1, [username] => user1))
[next] => array([User] =>array([id] => 3, [username] => user3))
)
27. 2. MVC TRONG CAKEPHP
24
2.2.1 Lấy dữ liệu
Dùng câu truy vấn
Cú pháp: <?php $this->Model->query(‘SQL query’); ?>
Ví dụ:
<?php $this->User->query(‘select * form users where id=1’)
Kết quả:
array(
[0] => array([User] =>array([id] => 1, [username] => user1))
)
28. 2. MVC TRONG CAKEPHP
25
2.2.2 Lưu dữ liệu
Dùng hàm save()
Save không có tham số: Sử dụng kết hợp với set()
Cú pháp:
<?php $this->Model->set(‘fieldname’, ‘value’); ?>
<?php $this->Model->save(); ?>
Ví dụ:
<?php
$this->User->set(array(‘username’ => ‘user1’, ‘email’ =>
‘user1@gmail.com’));
$this->User->save();
?>
29. 2. MVC TRONG CAKEPHP
26
2.2.2 Lưu dữ liệu
Dùng hàm saveField(): Sử dụng khi muốn lưu một trường
dữ liệu trong bảng
Cú pháp:
<?php $this->Model->saveField(‘fieldname’, ‘value’); ?>
Ví dụ:
<?php $this->User->saveField(‘username’,’use1’); ?>
30. 2. MVC TRONG CAKEPHP
2.2.3 Các mệnh đề điều kiện khi truy vấn
Truy vấn có điều kiện: Trong CakePHP conditions tương
đương mệnh đề WHERE trong SQl, array là tập hợp các
điều kiện của WHERE
Cú pháp:
27
‘conditions’ => array()
Ví dụ:
<?php
$this->User->find(‘all’, array(‘conditions’=> array(‘User.id’ => 1)))
?>
Trong truy vấn SQL:
select * from User where id=1
31. 2. MVC TRONG CAKEPHP
2.2.3 Các mệnh đề điều kiện khi truy vấn
Các biểu thức logic: Các biểu thức điều kiện trong
CakePHP đều được thể hiện dưới một phần tử của mảng.
Gồm các biểu thức điều kiện: AND, OR, NOT…
Ví dụ: Tìm tất cả User có tham số active =1, hoặc thuộc
group có id=1
28
<?php
$this->User->find(‘all’, array(‘conditions’=> array(‘or’ =>
array(‘User.active’=>1, ‘User.group_id’=>1)))); ?>
Ví dụ: Tìm user không phải là admin
<?php $this->user->find(‘all’, array(‘conditions’ =>
array(‘not’=>array(‘User.username’ => ‘admin’)))); ?>
32. 2. MVC TRONG CAKEPHP
29
2.3 Controller
Controller điều khiển luồng xử lý của ứng dụng. Trong
Controller thường chứa những lệnh gọi tới Model để truy
cập dữ liệu. Controller được xem là tầng điều khiển của
ứng dụng. Controller chỉ nên khai báo các action(gọi là
phương thức xử lý, được đặt trùng tên với tên file View).
Cách khai báo Controller:
class DemosController extends AppController{
var $name = ‘Demos’;
function add() {
………………………….
}
}
33. 2. MVC TRONG CAKEPHP
30
2.3 Controller
Session Component
Khai báo Session
var $components = array(‘Session’);
Các sử dụng:
write ($name, $value): lưu session có giá trị
$value vào $name
read($name): đọc session thông qua $name
check($name): kiểm tra session có tồn tại hay
không
delete($key): xóa session thông qua tên
destroy(): xóa toàn bộ session
error(): xác định lỗi cuối cùng liên qua đến session