thinkPHP中可用兩種方式驗(yàn)證數(shù)據(jù):
1、驗(yàn)證器:類(lèi) 基于系統(tǒng)的驗(yàn)證器類(lèi),用戶(hù)包裝后自定義的驗(yàn)證器類(lèi)
2、獨(dú)立驗(yàn)證:直接調(diào)用框架內(nèi)置的驗(yàn)證類(lèi):think\Validate
___________________________________________________________________________________________________
第一種:驗(yàn)證器類(lèi)
人為的約定是一個(gè)用戶(hù)自定義驗(yàn)證器類(lèi)并繼承Validate,用來(lái)對(duì)數(shù)據(jù)表中的字段進(jìn)行驗(yàn)證
1、創(chuàng)建驗(yàn)證器類(lèi)
check($data , $rules = [], $scene = '')
// 1、給數(shù)據(jù)表中的字段幫規(guī)定驗(yàn)證規(guī)則 protected $rule = [ 'name' => 'require|chsAlpha|max:25', 'sex' => 'require|number|in:0,1', ... ]; // 2、驗(yàn)證提示信息 protected $message = [ 'name.require' => '名稱(chēng)必須', 'name.chsAlpha' => '名稱(chēng)只能是漢字、字母', 'name.max' => '名稱(chēng)最多不能超過(guò)25個(gè)字符', 'sex.require' => '性別必須', 'sex.number' => '性別必須是數(shù)字', 'sex.in' => '性別只能是1或0', ... ];
2、使用定義的驗(yàn)證類(lèi)
先引入 use app\index\validate\Staff as staffValidate; 在類(lèi)中驗(yàn)證數(shù)據(jù) public function vali(){ $data = [ // 模擬數(shù)據(jù) 'name'=>'灰灰', 'sex'=>1 ]; $validate = new staffValidate; // 實(shí)例化驗(yàn)證器類(lèi) $res = $validate->check($data); if (false === $res){ halt($validate->getError()); // $validate->getError() 如果驗(yàn)證錯(cuò)誤顯示驗(yàn)證器類(lèi)中對(duì)應(yīng)的驗(yàn)證提示信息 } dump('驗(yàn)證通過(guò)'); }
——————————————————————————————————————————————————
第二種:獨(dú)立驗(yàn)證
分兩種:
1. 獨(dú)立驗(yàn)證:直接調(diào)用框架內(nèi)置的驗(yàn)證類(lèi):think\Validate
需要?jiǎng)?chuàng)建驗(yàn)證器類(lèi)對(duì)象
Validate::make($rule [,$message]) 提示信息可選
public function vali2(){ $rule = [ 'name' => 'require|chsAlpha|max:25', 'sex' => 'require|number|in:0,1' ]; $message = [ 'name.require' => '名稱(chēng)必須', 'name.chsAlpha' => '名稱(chēng)只能是漢字、字母', 'name.max' => '名稱(chēng)最多不能超過(guò)25個(gè)字符', 'sex.require' => '性別必須', 'sex.number' => '性別必須是數(shù)字', 'sex.in' => '性別只能是1或0' ]; $validate = Validate::make($rule,$message); $data = [ 'name'=>'小飛鼠', 'sex'=>1, 'age'=>22, 'email'=>'admin@php.cn' ]; $res = $validate->check($data); if (false === $res){ halt($validate->getError()); } dump('驗(yàn)證通過(guò)'); }
2. 獨(dú)立驗(yàn)證:使用驗(yàn)證過(guò)對(duì)象鏈?zhǔn)秸{(diào)用
public function vali3(){ $validate = new Validate(); // 鏈?zhǔn)秸{(diào)用 $res = $validate->rule([ 'name' => 'require|chsAlpha|max:25', 'sex' => 'require|number|in:0,1', 'age' => 'require|number|between ]) ->message([ 'name.require' => '名稱(chēng)必須', 'name.chsAlpha' => '名稱(chēng)只能是漢字、字母', 'name.max' => '名稱(chēng)最多不能超過(guò)25個(gè)字符', 'sex.require' => '性別必須', 'sex.number' => '性別必須是數(shù)字', 'sex.in' => '性別只能是1或0' ]) ->check($data); if (false === $res){ halt($validate->getError()); } dump('驗(yàn)證通過(guò)'); }
如果不加驗(yàn)證消息則會(huì)顯示默認(rèn)的提示
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)