我們在書寫控制器語句在有時候需要做到驗證
比如說我要判斷提交的某個字段的變量 不能為空 書寫起來就很麻煩
如果驗證的規則多了就感覺代碼一大堆 影響代碼的美觀 而且效率不高
所以 需要一款表單驗證器了
把validator.class.php 驗證類 放到/yzmphp/core/class目錄下 即可
然后 我們需要構建一個模型驗證類 可以輸出驗證規則 以及自定義錯誤提示
以下是一個示例文件 具體你需要到模塊的model目錄下新建一個模型類 比如說我新建了一個文件叫test_validate.class.php
<?php // +---------------------------------------------------------------------- // | Site: [ http://www.yzmcms.com] // +---------------------------------------------------------------------- // | Copyright: 袁志蒙工作室,并保留所有權利 // +---------------------------------------------------------------------- // | Author: zhaosong 原創字段驗證類 請不要未授權的情況下搬運代碼為自己的 // +---------------------------------------------------------------------- // | Explain: 這不是一個自由軟件,您只能在不用于商業目的的前提下對程序代碼進行修改和使用,不允許對程序代碼以任何形式任何目的的再發布! // +---------------------------------------------------------------------- yzm_base::load_sys_class('validator','',0); class test_validate extends validator { /** * @書寫驗證規則 * @author zhaosong * @date 2023-11-03 */ protected $rules = [ 'model' => 'required|min:6', 'end'=>'required' ]; /** * @自定義錯誤信息提示 * @author zhaosong * @date 2023-11-03 */ protected $messages = [ 'model.required' => 'model模型不能為空', 'model.min' => 'model字段最少需要6位', 'end.isnumber' => 'end這個字段必須為數字', 'end.required'=>'這個字段不能為空!!!' ]; }
我們可以到表單方法中使用 列如
<?php // +---------------------------------------------------------------------- // | Site: [ http://www.yzmcms.com] // +---------------------------------------------------------------------- // | Copyright: 袁志蒙工作室,并保留所有權利 // +---------------------------------------------------------------------- // | Author: YuanZhiMeng // +---------------------------------------------------------------------- // | Explain: 這不是一個自由軟件,您只能在不用于商業目的的前提下對程序代碼進行修改和使用,不允許對程序代碼以任何形式任何目的的再發布! // +---------------------------------------------------------------------- defined('IN_YZMPHP') or exit('Access Denied'); class test { // 請注意這只是一個測試模塊 請按照你需求來設置驗證規則 以下是在add方法中 // 獲取的表單參數提交給驗證模型 驗證數據是否符合驗證規則 public function add(){ if(is_post()) { // 加載了模型驗證類 yzm_base::load_model('test_validate', '', 0); // 這里把提交的參數傳遞給模型驗證類 $validator = new test_validate($_POST); $isValid = $validator->check(); if($isValid){ // 如果驗證規則不符合就會回調錯誤信息 沒有信息回調就是驗證通過的意思 return_message($isValid, 0); } } } }
基本驗證規則就是這樣 我們來查看效果
我們在字段為空的時候 會錯誤提示 該字段不能為空 這是英文的 如果 我們需要實現自定義提示信息
我們可以在模型驗證類中寫
protected $messages = [ 'end.required'=>'這個字段不能為空!!!' ];
看看效果
我們可以一個提交變量字段驗證多個規則 列如
protected $rules = [ 'model' => 'required|min:6', 'end'=>'required' ];
先驗證 不能為空 后驗證 字符串最少6為 使用分號隔開
然后再驗證下一個需要驗證的字段
如果字段有多個驗證規則 我們需要分開設置多個自定義提示信息列如
protected $messages = [ 'model.required' => 'model模型不能為空', 'model.min' => 'model字段最少需要6位', ];
這塊應該是可以理解的 那我們看看內置多少驗證規則可以寫
驗證某個字段必須,例如:
'name'=>'require'
驗證某個字段的值是否為純數字例如:
'num'=>'number'
驗證某個字段的值是否為整數,例如:
'num'=>'integer'
驗證某個字段的值是否為浮點數字,例如:
'num'=>'float'
驗證某個字段的值是否為布爾值,例如:
'num'=>'boolean'
驗證某個字段的值是否為email地址,例如:
'email'=>'email'
驗證某個字段的值是否為數組,例如:
'info'=>'array'
驗證某個字段的值是否為字符串,例如:
'info'=>'string'
驗證值是否為有效的日期,例如:
'date'=>'date'
驗證某個字段的值是否為純字母,例如:
'name'=>'alpha'
驗證某個字段的值是否為字母和數字,例如:
'name'=>'alnum'
驗證某個字段的值只能是漢字,例如:
'name'=>'hanzi'
驗證某個字段的值只能是漢字、字母和數字,例如:
'name'=>'hanzi_alnum'
驗證某個字段的值只能是漢字、字母、數字和下劃線_及破折號-,例如:
'name'=>'hanzi_alnum_dash'
驗證某個字段的值只能是控制字符(換行、縮進、空格),例如:
'name'=>'control_chars'
驗證某個字段的值只能是小寫字符,例如:
'name'=>'lowercase'
驗證某個字段的值只能是大寫字符,例如:
'name'=>'uppercase'
驗證某個字段的值只能是空白字符(包括縮進,垂直制表符,換行符,回車和換頁字符),例如:
'name'=>'whitespace'
驗證某個字段的值是否為有效的域名或者IP,例如:
'host'=>'domain_or_ip'
驗證某個字段的值是否為有效的URL地址,例如:
'url'=>'url'
驗證某個字段的值是否為指定格式的日期,例如:
'dates'=>'dates'
驗證某個字段的值是否為有效的手機,例如:
'mobile'=>'phone'
驗證某個字段的值是否為有效的身份證格式,例如:
'id_card'=>'id_card'
驗證某個字段的值的最大長度,例如:
'name'=>'max_length:25'
驗證某個字段是否和另外一個字段的值一致,例如:
'repassword'=>'same:11'
驗證某個字段是否以某個字符串開頭,例如:
'name'=>'starts_with:yzmcms'
驗證某個字段是否以某個字符串結尾,例如:
'name'=>'ends_with:yzmcms'
驗證某個字段是否以包含某個字符串,例如:
'name'=>'contains:yzmcms'
驗證是否等于某個值,例如:
'score'=>'equals:100'
驗證是否大于等于某個值,例如:
'score'=>'greater_than_equal:60'
驗證是否小于等于某個值,例如:
'score'=>'less_than_equal:100'
未經允許本人授權 嚴謹搬運至某盜版中使用 源碼原創所寫 使用靈活
想使用但不懂 可以提出問題 我給你解決 謝謝!!
登錄后可查看詳情!