CakePHP Framework: Kiểm tra tính hợp lệ của dữ liệu data validation... Data Validation là một trong những thành phần không thể thiếu trong hầu hết các ứng dụng web.. Nó giúp cho các dữ l
Trang 1CakePHP Framework: Kiểm tra tính hợp lệ của dữ
liệu (data validation)
Trang 2Data Validation là một trong những thành phần không thể thiếu trong hầu hết các ứng dụng web Nó giúp cho các dữ liệu được đảm bảo được kiểm tra chặt chẽ trước khi chèn vào CSDL Cũng như CodeIgniter, Zend ,CakePHP cũng
có chức năng Data Validation Bài viết sẽ hướng dẫn cho người dùng cách sử dụng tập luật và ứng dụng chúng trong các trường hợp cụ thể khác nhau với các hàm hổ trợ sẵn của CakePHP
Trang 3Việc thực hiện cài đặt CakePHP là không khó Nếu bạn vẫn chưa biết làm thì
có thể (Xem lại bài CakePHP Framework cho người mới bắt đầu)
Trang 43 var $name = "Valids";
4 var $helpers = array ('Html','Form');
Trang 5C Sử dụng 1 tập luật cho 1 field
- Yêu cầu tạo 1 form nhập liệu với 2 field với các tập luật được mô tả :
- title : không được phép rỗng
- info : không được phép rỗng
Trong Controller Valid ta thêm hàm demo01 :
01 <?php
02 class ValidsController extends AppController{
03 var $name = "Valids";
04 var $helpers = array ('Html','Form');
Trang 7$this->validates($this->validate) //hàm kiểm tra các tập luật
Các từ được coi từ khóa thì phải viết đúng tên và giữ nguyên nội dung của từ
Trang 8Chạy thử ứng dụng đầu tiên : http://localhost/cakephp/valids/demo01
Mộ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
Trang 9§ '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
D Sử dụng nhiều tập luật cho 1 field
Yêu cầu tạo 1 form nhập liệu với 3 field với các tập luật được mô tả :
- Username : không được phép rỗng, tối đa là 10 kí tự, ít nhất là 4 kí tự
- Email : không được phép rỗng, định dạng là email
- website: không được phép rỗng, định dạng là địa chỉ url
Trong Controller Valid ta thêm hàm demo02 :
01 <?php
02 class ValidsController extends AppController{
Trang 1003 var $name = "Valids";
04 var $helpers = array ('Html','Form');
Trang 113 echo $this->Form->create('Valid', array('action' => 'demo02'));
02 class valid extends AppModel{
03 var $useTable = false;
04 var $validate = array();
05 // - Valid : Multi rule
Trang 1211 "message" => "Username can not empty",
Trang 15E Sử dụng tập luật bằng regular expression
- Thông thường các rule có sẵn không đáp ứng được nhu cầu validation dữ liệu của chúng ta , với những ứng dụng phức tạp đòi hỏi khắc khe về việc nhập liệu thì Cakephp cũng có hổ trợ validation với Regular Expression
Trang 17Tiếp theo chỉ là các kí tự chữ hoa hoặc thường, số và dấu "_" , các kí tự này
có thể xuất hiện hoặc xuất hiện nhiều lần
Trang 18Trong Controller Valid ta thêm hàm demo03 :
01 <?php
02 class ValidsController extends AppController{
03 var $name = "Valids";
04 var $helpers = array ('Html','Form');
Trang 19Trong thý mục app/views/valids/ tạo file demo03.ctp :
02 class valid extends AppModel{
03 var $useTable = false;
04 var $validate = array();
05 // - Valid : Use Regular Expresstion
06 function valid_03(){
07 $this->validate = array(
08 "username" => array(
Trang 22
§ Kiểm tra username và pasword trước khi đãng nhập
§ So sánh các dữ liệu trong database
§ So sánh hai mật khẩu nhập có giống nhau không
02 class ValidsController extends AppController{
03 var $name = "Valids";
04 var $helpers = array ('Html','Form');
Trang 245 echo $this->Form->end('Check');
6 ?>
Trong model Valid thêm hàm valid_04() và hàm checkUsername()
01 <?php
02 class valid extends AppModel{
03 var $useTable = false;
04 var $validate = array();
05 // - Valid with call back function