Yii2实用基础学习笔记(四):模型验证 [ 2.0 版本 ]
- 模型的load方法
模型对象的load方法为模型加载数据,一般地,模型尝试从$_POST搜集用户提交的数据,由Yii的yii\web\Request::post()方法负责搜集。
另外load加载的字段必须在模型的rules方法里,不然也不能赋值。 - 模型的rules规则
常用验证规则:
1.【safe 不验证规则】
//['字段','safe']
//[['字段1','字段2',……],'safe']
2.【required 不能为空,必须验证】
//['字段','required','message' => '提示信息']
//[['字段1','字段2',……],'required','message' => '提示信息']
3.【compare 对比验证】
//['字段','compare','compareValue'=>'对比的值','message' => '提示信息']
//['字段','compare','compareAttribute'=>'对比的字段','message' => '提示信息']
4.【double 双精度数字验证】
//['字段','double','min'=>'最小值','max' => '最大值','tooSmall'=>'小于最小值提示','tooBig'=>'大于最大值提示','message'=>'提示信息']
5.【email 邮箱规则验证】
//['字段','email','message' => '提示信息']
6.【in 范围验证】
//['字段','in','range'=>['1','2','3',……],'message' => '提示信息']
7.【integer 整型数字验证】
//['字段','integer','message' => '提示信息']
8.【match 正则验证】
//['字段','match','parttern'=>'#正则#','message' => '提示信息']
9.【string 字符串验证】
//['字段','string','min'=>'最小长度','max' => '最大长度','tooShort'=>'小于最小长度提示','tooLong'=>'大于最大长度提示','message'=>'提示信息']
10.【unique 唯一验证】
//['字段','unique','message' => '提示信息']
11.【captcha 验证码验证】
//['字段','captcha','captchaAction',=>'login/captcha','message' => '提示信息']
12.自定义验证
//['字段','自定义方法']
//可通过在自定义方法里调用addError()来定义错误
例:
['username',function($attribute,$params){
if(满足条件){
$this->addError($attribute,'提示信息');
}
},'params'=>['message'=>'dd']]
更多类型参考类文档 http://www.yiichina.com/doc/api/2.0/yii-validators-validator
在@app\models下创建一个Test命名的模型文件
<?php
namespace app\models;
use yii\base\Model;
class Test extends Model{
public $username;
public $password;
public function rules(){
return [
//[['username','password'],'required','message'=>'不能为空']
['username','required','message' => '用户名不能为空'],
['password','required','message' => '密码不能为空']
];
}
}
在Test控制器新建一个actionValidate操作来测试,通过模型的validate()方法在幕后执行验证操作:
public function actionValidate(){
//模拟数据,数组的一维必须是相关模型名
//手动封盖值用于测试
$data = [
'Test' => [
'username' => 'hello',
'password' => '123321'
]
];
$test = new \app\models\Test();
$test->load($data);
if($data && $test->validate()){
echo 'ok';
}else{
var_dump($test->errors);
}
}
可以自构建相应数据来测试所有验证
菜鸟CK 北京
注册时间:2015-08-20
最后登录:2020-02-24
在线时长:24小时15分
最后登录:2020-02-24
在线时长:24小时15分
- 粉丝103
- 金钱1110
- 威望110
- 积分2450
共 2 条评论
支持一下 已收藏
Thanks!!!
初学者前来报道,就看你的了
我也是初学者,共同进步!