Trong bài tut này mình sẽ hướng dẫn các bạn vấn đề form & form validation trong CodeIgniter : ( các phần cơ bản mình không đề cập đến nhé . )
. Dùng hàm callback
. Tự tạo 1 form validation
. Thay đổi thông báo lỗi - Thêm CSS cho thông báo lỗi .

Yêu cầu : tạo 1 form đăng ký user với thông tin như sau : tên , password , email , điện thoại , năm sinh , nơi ở .

Tạo controller user :

PHP Code:
PHP Code:
 <?php 
class User extends Controller 
    function 
__construct() { 
        
parent::controller(); 
    } 
     
    function 
index() { 
        
$this->load->helper('form'); 
        
$this->load->view('user'); 
    } 
}  
?>
View user.php :

PHP Code:
PHP Code:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<?php 
    
echo form_open('user'); 
    echo 
form_fieldset('Đăng ký :'); 
    echo 
form_label('User name :'); 
    echo 
form_input('username').'<br />'
    echo 
form_error('username');     
    echo 
form_label('Password :'); 
    echo 
form_password('pass').'<br />'
    echo 
form_error('username');         
    echo 
form_label('Email :'); 
    echo 
form_password('email').'<br />'
    echo 
form_error('email');         
    echo 
form_label('Năm sinh :'); 
    echo 
form_input('year').'<br />'
    echo 
form_error('year');     
    
$loc = array (0    => '---------------'
                  
=> 'HCM'
                  
=> 'HN'
                  
=> 'HP' 
                  
); 
    echo 
form_label('Location : '); 
    echo 
form_dropdown('loc',$loc).'<br />'
    echo 
form_error('loc');         
    echo 
form_submit('ok','Lưu'); 
    echo 
form_fieldset_close();     
     
     
?> 
</body> 
</html>
Thêm form validation :
PHP Code:
PHP Code:
 function index() { 
        
$this->load->helper('form'); 
        
// form validation 
        
$this->load->library('form_validation'); 
        
$this->form_validation->set_rules('username','Tên đăng nhập ','required'); 
        if (
$this->form_validation->run() == FALSE
        {                 
            
$this->load->view('user'); 
        } else { 
            echo 
'ok'
        } 
    } 
Dùng callback để kiểm tra tên đăng nhập có tồn tại hay không ?
PHP Code:
PHP Code:
         $this->form_validation->set_rules('username''tên đăng nhập' 'required|callback_checkusername'); 
Hàm checkusername :

PHP Code:
PHP Code:
 function checkusername($u
    { 
        if (
$u == 'ronan'
        { 
            
$this->form_validation->set_message('checkusername''%s đã được đăng ký.');                         
            return 
false
        } else { 
            return 
true
        } 
    } 
Form & Form_validation trong Codeigniter Đang viết mà đói bụng quá , thôi để ăn cơm xong viếp típ vậy .
Form & form validation (continue)

Thay đổi thông báo lỗi : nếu không thích thông báo lỗi bằng tiếng Anh , bạn có thể chỉnh ngôn ngữ trong file langluage : (./system/language/english/form_validation_lang.php)

PHP Code:
PHP Code:
     <?php 

$lang
['required']             = "Điền thông tn %s ."
$lang['valid_email']        = "%s không hợp lệ."
.. 
?>
Tự tạo 1 form validation :

Ví dụ : tạo validation cho select, năm sinh ( > 1900 )
Trong file Form_validation (./system/libraries/Form_validation.php) thêm vào hàm select , year

PHP Code:
PHP Code:
 function select($str
    { 
        return (
$str == ) ? FALSE TRUE
    } 
     
    function 
year($str
    { 
        return (
$str 1900) ? FALSE TRUE
    } 
Thêm thông báo lỗi (trong file lang ở trên) :

PHP Code:
PHP Code:
 $lang['select']             = "Bạn chưa chọn %s";  
$lang['year']                = "Thông tin năm %s không hợp lệ."
- Thêm css cho thông báo lỗi :
Trong controller : chèn thẻ div vào trong thông báo lỗi
PHP Code:
PHP Code:
 $this->form_validation->set_error_delimiters('<div class="error">','</div>'); 
Trong view thêm css cho thông báo lỗi :
PHP Code:
PHP Code:
 <style type="text/css"
.
error 
    
color:red
    
font-weight:bold

</
style
Form & Form_validation trong Codeigniter Thế là xong, bạn có thể có 1 form như nhau :