thinkphp 表單自動驗證功能

來源:互聯網
上載者:User

標籤:blog   http   使用   os   檔案   資料   

thinkphp 在Model基類為我們定義了自動驗證的函數和Regex,我們只需要在對應的資料庫表的模型類下建立$_validate屬性就可以了,下面介紹表單資料自動驗證的功能,非常實用而方便!

1、我們找到Model基類,可以看到 protected $_validate       = array();  // 自動驗證定,呵呵,它是數群組類型的,下面在對應資料模型檔案定義它;

2、

public function CheckVerify($verify) {
   if (md5($verify) != Session::get(‘verify‘)) return false;
        return true;
}

//自動驗證
    protected $_validate = array(
        array("title", "require", "標題必須!"),
        array(‘categoryId‘, ‘require‘, "類別必須!"),
        array(‘content‘, ‘require‘, "內容必須!"),
        array(‘verify‘, ‘require‘,‘驗證碼必須!‘),
        array(‘verify‘, ‘CheckVerify‘, ‘驗證碼錯誤!‘, 0, ‘callback‘)
    );

3、格式說明:array(驗證欄位,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間),

4、參數解釋:

驗證欄位:需要驗證的表單欄位名稱,這個欄位不一定是資料庫欄位,也可以是表單的一些輔助欄位,例如確認密碼和驗證碼等等。
驗證規則: 要進行驗證的規則,需要結合附加規則(必須),官方已經包含的規則如下(自己同時也可以加):

 

$validate = array(
            ‘require‘=> ‘/.+/‘,
            ‘email‘ => ‘/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/‘,
            ‘url‘ => ‘/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\‘:+!]*([^<>\"\"])*$/‘,
            ‘currency‘ => ‘/^\d+(\.\d+)?$/‘,
            ‘number‘ => ‘/^\d+$/‘,
            ‘zip‘ => ‘/^[1-9]\d{5}$/‘,
            ‘integer‘ => ‘/^[-\+]?\d+$/‘,
            ‘double‘ => ‘/^[-\+]?\d+(\.\d+)?$/‘,
            ‘english‘ => ‘/^[A-Za-z]+$/‘,
        );

 

 

提示資訊: 用於驗證失敗後的提示資訊定義(必須)、
驗證條件:(可選)
驗證條件的規則有三條: 
Model::EXISTS_TO_VAILIDATE 或者0 存在欄位就驗證 (預設)    
Model::MUST_TO_VALIDATE 或者1 必須驗證     
Model::VALUE_TO_VAILIDATE或者2 值不為空白的時候驗證    
附加規則:
regex 正則驗證,說明前面的那個驗證規則是一個Regex;
function 使用函數驗證,說明前面的那個驗證是個函數名;
callback 使用方法驗證,說明驗證規則是一個Model類的方法;
confirm 驗證表單中的兩個欄位是否相等,驗證規則是一個欄位名;
equal 驗證是否等於某個值,這個值是有前面的驗證規則定義的;
in 驗證是否在某個範圍之內,前面定義的是一個數組;
unique 驗證是否唯一,系統會根據欄位目前的值查詢資料庫來判斷時候存在相同的值;
同時,系統還內建了一些常用的正則驗證規則,可以這節使用,包括:require欄位必須,email 郵箱;
currency 貨幣,number 數字,這些驗證規則可以直接使用;

驗證時間:(可選)

01.Model:: MODEL_INSERT 或者1新增資料時候驗證   
02.Model:: MODEL_UPDATE 或者2編輯資料時候驗證   
03.Model:: MODEL_BOTH 或者3 全部情況下驗證(預設)

5、官方樣本:

protected $_validate  =  array(   
array(‘verify‘,‘require‘,‘驗證碼必須!‘), //預設情況下用正則進行驗證   
array(name,‘‘,‘帳號名稱已經存在!‘,0,’unique’,1), // 在新增的時候驗證name欄位是否唯一   
array(‘value‘,array(1,2,3),‘值的範圍不正確!‘,2,’in’), // 當值不為空白的時候判斷是否在一個範圍內   
array(‘repassword‘,‘password‘,‘確認密碼不正確‘,0,’confirm’), // 驗證確認密碼是否和密碼一致   
array(‘password‘,‘checkPwd‘,‘密碼格式不正確‘,0,’function’)// 自訂函數驗證密碼格式  
);  

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.