e learning lab - tim hieu cake php

35
E-Learning Lab Thí sinh dự thi “Dạy Online – Share khoảnh khắc” Link: http://home.e-learninglab.co/su-kien/

Upload: elearninglabvn

Post on 02-Jul-2015

1.257 views

Category:

Education


3 download

DESCRIPTION

Thí sinh dự thi "Dạy Online - Share khoảnh khắc" tại E-Learning Lab. Link: http://home.e-learninglab.co/eshare/

TRANSCRIPT

Page 1: E learning lab - Tim hieu Cake PHP

E-Learning Lab

Thí sinh dự thi

“Dạy Online – Share khoảnh khắc”

Link:

http://home.e-learninglab.co/su-kien/

Page 2: E learning lab - Tim hieu Cake PHP

TÌM HIỂU FRAMEWORK CAKEPHP

Page 3: E learning lab - Tim hieu Cake PHP

NỘI DUNG TRÌNH BÀY

GIỚI THIỆU CAKEPHP1

1

MÔ HÌNH MVC TRONG CAKEPHP FRAMEWORK2

Page 4: E learning lab - Tim hieu Cake PHP

1. GIỚI THIỆU CAKEPHP

2

CakePHP là một Framework phát triển ứng dụngweb mã nguồn mở. Mục tiêu chính là cho phépbạn làm việc một cách nhanh chóng và có cấutrú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ảnquyề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ụngthương mại hoặc ứng dụng mã nguồn đóng.

Page 5: E learning lab - Tim hieu Cake PHP

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.

Page 6: E learning lab - Tim hieu Cake PHP

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

Page 7: E learning lab - Tim hieu Cake PHP

1.GIỚI THIỆU CAKEPHP

Một số website ứng dụng framework CakePHP

Website Teamspeak.net

5

Page 8: E learning lab - Tim hieu Cake PHP

1.GIỚI THIỆU CAKEPHP

Một số website ứng dụng framework CakePHP

Website followmy.tv

6

Page 9: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

7

(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 để truycập dữ liệu.(3): Model sẽ thực hiện yêu cầu củaController bằng cách lấy cập nhật hoặclư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êucầu người dùng ra với một định dạngxác định.

Sơ đồ hoạt động của mô hình MVC

Page 10: E learning lab - Tim hieu Cake PHP

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ề chongười dùng khi một yêu cầu được thực thi. Nó cơ bảnchứ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ảithông qua Controller.

Một số thư viện hỗ trợ cho view như: FormHelper,HTMLHelper…

Page 11: E learning lab - Tim hieu Cake PHP

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();?>

Page 12: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

10

2.1.1 FormHelper

- Ngoài ra còn sử dụng một số input phổ biến:• 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’));?>

Page 13: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

11

2.1.2 HTMLHelper

Vai trò của HtmlHelper trong CakePHP là thực hiện nhữngtù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()

Page 14: E learning lab - Tim hieu Cake PHP

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" />

Page 15: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

13

2.1.2.2 HtmlHelper::css($path, array options=array())

Trong đó:• $path: đường dẫn• $options(array): mảng các tùy chọn

Cú pháp:<?php echo $this->Html->css(array('reponsive', 'menu')); ?>

<?php echo $this->Html->charset(); ?>

Kết quả:<link rel="stylesheet" type="text/css" href="/css/main.css" /><link rel="stylesheet" type="text/css" href="/css/reponsive.css" /><link rel="stylesheet" type="text/css" href="/css/menu.css" />

Page 16: E learning lab - Tim hieu Cake PHP

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’); ?>

Page 17: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

15

2.1.2.4 HtmlHelper::image(string $path, array options=array())

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"/>

Page 18: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

16

2.1.2.5 HtmlHelper::link($title, $url=null, array options=array(),

$confirmMessage=false)

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>

Page 19: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

17

2.1.2.6 HtmlHelper::script($url=null, array options=array())

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>

Page 20: E learning lab - Tim hieu Cake PHP

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ộtmả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.

Page 21: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

18

2.2 Model

Model là những lớp được xây dựng nhằm trao đổi thôngtin với cơ sở dữ liệu. Một lớp Model có thể thực hiện cáctá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{

…………………….}

Page 22: E learning lab - Tim hieu Cake PHP

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

Page 23: E learning lab - Tim hieu Cake PHP

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ềukiệ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‘

)

Page 24: E learning lab - Tim hieu Cake PHP

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 đượcCú 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ấtCú 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’); ?>

Page 25: E learning lab - Tim hieu Cake PHP

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ênCú 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ùngtrong 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)

Page 26: E learning lab - Tim hieu Cake PHP

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 sauCú 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))

)

Page 27: E learning lab - Tim hieu Cake PHP

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)))

Page 28: E learning lab - Tim hieu Cake PHP

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’ => ‘[email protected]’));

$this->User->save();?>

Page 29: E learning lab - Tim hieu Cake PHP

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ườngdữ liệu trong bảng

Cú pháp: <?php $this->Model->saveField(‘fieldname’, ‘value’); ?>

Ví dụ: <?php $this->User->saveField(‘username’,’use1’); ?>

Page 30: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

27

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 WHERECú pháp:

‘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

Page 31: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

28

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 trongCakePHP đề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ộcgroup có id=1

<?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’)))); ?>

Page 32: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

29

2.3 ControllerController điều khiển luồng xử lý của ứng dụng. TrongController thường chứa những lệnh gọi tới Model để truycậ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() {

………………………….}

}

Page 33: E learning lab - Tim hieu Cake PHP

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

Page 34: E learning lab - Tim hieu Cake PHP

2. MVC TRONG CAKEPHP

31

2.3 Controller

Ví dụ:

write: <?php $this->Session->write(‘username’,’user1’); ?>

read: <?php $this->Session->read(‘username’); ?>

check: <?php $this->Session->check(‘username’); ?>

delete: <?php $this->Session->delete(‘username’); ?>

destroy: <?php $this->Session->destroy(); ?>

Page 35: E learning lab - Tim hieu Cake PHP