CakePHP là một Framework mã nguồn mở, miễn phí dành cho việc phát triển các ứng dụng web bằng ngôn ngữ PHP, mục đích của CakePHP là cung cấp một framework cho người sử dụng php phát triển những ứng dụng web nhanh, mạnh mà không mất tính linh hoạt của nó. CakePHP là một nền tảng phát triển ứng dụng nhanh, cấu trúc của nó được tạo ra để lập trình viên tạo các ứng dụng web. Nó tạo ra một nền tảng có cấu trúc, cho phép bạn làm việc trên cấu trúc đó một cách nhanh chóng mà không mất đi sự uyển chuyển. Ngoài ra, CakePHP loại bỏ sự nhàm chán trong phát triển ứng dụng web: cung cấp các công cụ để viết thứ ta cần, thay vì phải làm đi làm lại một thứ. Khi bắt đầu tạo mới dự án (project), chỉ cần tạo một bản copy của CakePHP và tập trung vào việc chính của dự án. CakePHP có một đội ngũ phát triển và cộng đồng năng động, điều này mang lại giá trị to lớn cho các dự án. Ngoài việc giúp bạn khỏi phải làm đi làm lại một việc nào đó, sử dụng CakePHP đồng nghĩa với phần cốt lõi của ứng dụng của bạn đã được kiểm chứng và cải tiến không ngừng.
Trang 1FRAMWORK CAKEPHP 1.3.x
Thư mục + App: là nơi chứa mã nguồn của ứng dụng
+ Cake: là lơi chứa mã nguồn của framework cakephp
+ Pugins: Chứa các thành phần mở rộng cho ứng dụng
+ Vendors: chứa dứng dụng của bên thứ 3
+ Config: chứa các file cấu hình của hệ thống + Controllers: chứa các controller
+ Locale: chứa file ngôn ngữ + Model : chứa file model + Plugins : chứa các gói mở rộng + Tmp : thư mục tạm của ứng dụng + Vendors: chứa ứng dụng bên thứ 3 + Views: chứa các file giao diện + Webroot: chứa các file, images, js, css…
Trang 2CakePHP hoạt động theo mô hình MVC Mô hình MVC trong Cakephp chia ứng dụng ra 3 phần chính: Model, View và Controller, việc phân tách ứng dụng rõ ràng như vậy sẽ giúp bạn tách các phần xử lý riêng biệt, code sáng sủa hơn, dễ lập trình, quản lý , chỉnh sửa, nâng cấp
+ Model: giao tiếp với Database
+ View: nhận thông tin đã được xử lý gởi đến từ Controller, hiện thị cho người dùng
+ Controller: xử lý và điều hướng các yêu cầu của Client
Cách thức hoạt động
1 Đầu tiên client sử dụng web browser để gửi yêu cầu đến dụng, hoặc click vào đường link có dạng
http://localhost/cakephp/product/detail/10
http://{Domain}/{application}/{controller}/{action}/{Parameter}
2 Bộ phận điều vận Dispatcher (Là 1 thành phần của CakePHP) sẽ phân thích URL, controller,
action,
3 Sử dụng Router, xác định controller nào sẽ thực thi và gởi yêu cầu tới controller tương ứng
4 Khi gởi đến Controller nó sẽ làm 1 và thao tác cần thiết, có thể sẽ xử lý ngay tại controller hoặc sự dụng Model tương ứng để truy xuất dữ liệu
Sau khi lấy được dữ liệu, Controler sẽ đưa dữ liệu ra View, và View sẽ được hiển thị ra ngoài trình duyệt
Model
- Class: viết số ít, viết hoa chữ cái đầu mỗi từ
Vd: class User extends AppModel { // function }
- File: viết hình thức số ít, chữ thường, và cách nhau bằng dấu gạch dưới
Vd: user.php, user_framgia.php
- Table: viết dạng số nhiều
Vd: users.php, post_framgias.php
Controller
- Class: viết hình thức số nhiều, viết hoa chữ cái đầu tiên của mỗi từ, kết thúc bằng Controller
Vd: class UsersController extends AppController { //function }
- File: viết hình thức số nhiều, viết thường, mỗi từ cách nhau bằng dấu gạch chân, kết thúc bằng
controller
- Vd: users_controller.php, posts_controller.php
Trang 3- Path: Mỗi file trong view được đặt trong thư mục tương ứng với một controller
Vd: app/view/users
- File: tên file trùng với tên hàm tương ứng trong controller Vd: add.ctp, edit.ctp
1 Truy vấn dữ liệu tự động thông qua các hàm viết sẵn của CakePHP
Cú pháp: $this->Model->find($type,$params);
+ $type là phương thức truy vấn dữ liệu, có thể là : “all”, “first”, “count”, “list”, “neighbors” ,
“threaded”, giá trị mặc định là “first”
+ $this->User->find(‘all’); // select *from users + find(‘first’,’$param’) //trả về kết quả duy nhất + find(‘count’) //trả về tổng sô dòng được tìm thấy + find('threaded',$param) // trả về 1 mảng danh sách + find(‘neighbors’,’$param’) // trả về 1 kết quả đứng trước và đứng sau kết quả tìm được + find('threaded',$param) // trả về kết quả là 1 mảng lồng nhau
+ $params là một 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
array(
'conditions' => array('Model.field' => $thisValue), // mảng các điều kiện tìm kiếm 'recursive' => 1, //là một giá trị số nguyên , có thể là -1, 0, 1 hoặc 2
'fields' => array('Model.field1', 'DISTINCT Model.field2'), //mảng các cột dữ liệu muốn lấy ra 'order' => array('Model.created', 'Model.field3 DESC'), //xắp xếp dữ liệu
'group' => array('Model.field'), //mệnh đề Group By 'limit' => n, //số nguyên
'page' => n, // số nguyên 'offset'=> n, // số nguyên 'callbacks' => true //các giá trị bao gồm true, false, 'before', 'after' )
Truy vấn có điều kiện và biểu thức so sánh
Trang 4Tham khảo thêm tại địa chỉ :
http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Models.html
2 Truy vấn dữ liệu từ câu lệnh query
Cú pháp $this->Model->query('SQL query');
Helpers là một tập hợp các thư viện hữu ích để dùng trong View CakePHP đã xây dựng sẵn rất nhiều
helper như Form, Html, Ajax, Number, Session, Rss, Xml, Time… Những helper này thường xuyên được sử dụng để tạo các form, định dạng lại các thành phần trong view, thay đổi các thành phần đó theo
ý muốn
Khai báo Form helper như sau:
var $helpers = 'Form';
Khi sử dụng Form helper, trong view dùng cú pháp:
echo $this->Form->method(); // hoặc : echo $form->method();
Mở đầu form:
echo $this->Form->create($model,$option);
Trang 5+ $model: là tên model đang sử dụng, mặc định là null
+ $option : là mảng các giá trị của create(), bao gồm 'type', 'action', 'url', 'default',
'inputDefaults'
type: là phương thức của form, có thể là get, post, hoặc file(dùng trong việc upload file) Mặc
định của type là post
Vd: echo $this->Form->create('User', array('action' => 'login'));
Kết thúc form:
echo $this->Form->end('Submit')
Tham khảo thêm tại:
http://book.cakephp.org/1.3/en/The-Manual/Core-Helpers/Form.html
Để sử dụng Datavalidation thì trong ứng dụng của chúng ta cần có hai thành phần chính :
var $helpers = array ('Html','Form');
Thành phần namespace validate : sử dụng các tập luật để validation dữ liệu
var $validate = array(tập_luật);
Vd:
class valid extends AppModel{
var $useTable = false;
var $validate = array();
// - Valid 01 : one rule function vidu_01(){
$this->validate = array(
"title" => array(
"rule" => "notEmpty", "message" => "Please enter title !",), "info" => array(
"rule" => "notEmpty", // tập luật là không rỗng "message" => "Please enter info !", // thông báo khi có lỗi) );
if($this->validates($this->validate)) // nếu dữ liệu đã được validate (hợp lệ) return TRUE;
else return FALSE;
}
Trang 6Một số tập luật thông dụng :
'rule' => 'alphaNumeric' : chỉ có số hoặc chữ 'rule' => array('between', 5, 15) : giá trị nằm trong khoản từ 5-15 'rule' => array('comparison', '>=', 18) : giá trị phải lớn hơn 18 'rule' => array('email', true) : định dạng email
'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')) : dành cho upload file , kiểm tra extension
'rule' => array('minLength', 8) : độ dài nhỏ nhất là 8 'rule' => array('maxLength', 8) : độ dài tối đa là 8 'rule' => 'numeric' : dữ liệu nhập là số
'rule' => 'notEmpty' : dữ liệu không được bỏ trống 'rule' => 'url' : định dạng địa chỉ url
Regular expression
Để sử dụng Regular Expression thì cú pháp như sau :
'rule' => '/^nội_dung_regular_expression$/i';
Ví dụ :
+ 'rule' => '/^[a-z0-9]{4,10}$/i' //Dữ liệu chỉ là chữ thường và số, có từ 4-10 kí tự
Để sử dụng được Session, đầu tiên ta phải khai báo:
var $helpers = array('Html', 'Form','Javascript','Ajax','Common',’Session’);
Hoặc
var $components = array('Acl',’Mail’,’Session’);
+ Cú pháp sử dụng
1) write($name,$value)
- Lưu Session có giá trị $value vào tên $name
- $name có thể sử dụng dấn (.) để tạo thành mảng session
Vd:
//Lưu theo cú pháp thông thường
$this->Session->write('Username','huytuan');
//Lưu dạng mảng
$this->Session->write('Person.name', 'admin');
$this->Session->write('Person.email', 'vu.huy.tuan@framgia.com);
2) read ($name)
- Lấy giá trị session thông qua tên
Trang 7Vd :
echo $this->Session->read('Username'); //kết quả huytuan
pr($this->Session->read('Person'));
//kết quả
Array
(
[name] => admin
[email] => vu.huy.tuan@framgia.com
)
3) check($name)
- Kiểm tra xem có tồn tại session có tên là $name hay không
Vd: $this->Session->check('Username'); // trả về TRUE, FALSE
4) delete($name)
- Xóa Session thông qua tên:
Vd :
//Xóa Session Username
$this->Session->delete('Username');
//Chỉ xóa Session email của Person
$this->Session->delete('Person.email');
//Xóa toàn bộ Session Person
$this->Session->delete('Person');
5) Destroy()
- Xóa toàn bộ Cookie và Session
$this->Session->destroy();
6) seFlash($message,$element=”default”,$params=array(),$key=”flash”)
- Thường sử dụng trong Controller
+ $mesages: nội dung hiển thị
+ $element: Load file chứa nội dung bao quanh $messages Nội dung được lưu dạng file *.ctp trong thư mục app/view/elements/
+ $param: dùng để thay đổi các thuộc tính như : class, id, style…
+ $key: mặc định là “flash”
Trang 8Vd:
ta có file vidu.ctp (app/views/elements/vidu.ctp)
<div id="flashMessage" class="message_01"><?php echo $message ;?></div>
Thực hiện lệnh
$this->Session->setFlash('Hello World, 'vidu',array('class' =>'message_02'))
Thì nội dung file sms.ctp sẽ được load và hiển thị là :
<div id="flashMessage" class="message_02">Hello World</div>
SMARTY FRAMWORK
Smarty là một hệ thống tạo mẫu web (web template system) được viết trên nền PHP Smarty được giới thiệu như là một công cụ cho việc chia nhỏ quá trình thiết kế
Một số ưu điểm:
+ Tốc độ load trang rất nhanh (do tạo được cache)
+ Code ứng dụng trở lên trong sáng, mạch lạc và dễ bảo trì (do tách biệt phần code và templates)
+ Hiệu quả tối đa (Người thiết kế và người lập trình làm việc hoàn toàn độc lập, thay đổi website 1 cách nhanh chóng)
+ Được sự dụng phổ biến
Cấu trúc cơ bản của Smarty bao gồm các thành phần nằm trong thư mục libs Khi sử dụng ta cần phải khai báo
require ‘Smarty.class.php’; //gọi lớp Smarty
$smarty = new Smarty(); //Khởi tạo biến $smarty
1 Comment
Trang 9Những đoạn cần comment được đặt trong tags: {* comment vào đây *}
Vd:
2 Variables:
Các biến được bắt đầu bởi dấu $ File biến config là 1 ngoại lệ đối với cú pháp thông thường
Vd:
3 Functions
{funcname attr1="val" attr2="val"}
Trang 104 Capture
Được sử dụng để đưa đầu ra của template vào trong một file riêng biệt thay vì trình bày chúng
assign string no n/a Tên biến nơi mà định nghĩa đầu ra
của capture
VD:
5 Config_load
Được sử dụng để load các biến từ file cấu hình vào trong template
Trang 11global boolean no no
VD:
6 Foreach, foreachelse: (tạo vòng lặp)
Được sử dụng để duyệt qua các phần tử của mảng
Trang 127 Include
Được sử dụng để nạp những template khác vào trong 1 template
VD:
8 Include_php
Trang 13VD:
9 If, elseif, else:
{if} trong smarty rất linh hoạt khi dùng trong template {if} phải được kết thúc bởi 1 {/if} {else} và {elseif} được sử dụng trong tình huống cần duyệt nhiều trường hợp khác nhau
Qualifier Alternates Syntax Example Meaning PHP Equivalent
Trang 14VD:
is [not] div by $a is not div by 4 divisible by $a % $b == 0
is [not] even $a is not even [not] an even number (unary) $a % 2 == 0
is [not] even by $a is not even by $b grouping level [not] even ($a / $b) % 2 == 0
is [not] odd $a is not odd [not] an odd number (unary) $a % 2 != 0
is [not] odd by $a is not odd by $b [not] an odd grouping ($a / $b) % 2 != 0