关于Yii中模型场景的一些简单介绍
前言
在Yii中模型字段验证有一个场景的概念,可以在不同的场景下设置不同的验证规则,在Yii中的场景默认为default,简单实现如下
下面我以用户表,表中字段为user_name,password
简单规则如下
publicfunctionrules(){ return[ [['user_name','password'],'required'], [['user_name','password'],'string','max'=>255], ]; }
一:
如果我们需要在新增时验证user_name和password两个字段,在更新时只验证user_name字段
这时候我们可以在模型中覆盖yiibaseModel::scenarios()方法来自定义行为
publicfunctionscenarios() { return[ 'create'=>['user_name','password'],//create表示新增场景 'update'=>['user_name'],//update表示更新场景 ]; }
根据上面设置的场景规则,我们只需要在我们新增和更新时设置为指定的场景即可
//场景作为属性来设置 $model=newUser; $model->scenario='create'; //场景通过构造初始化配置来设置 $model=newUser(['scenario'=>'create']);
根据如上就可以实现在不同的场景下验证指定的字段
二:
我们可以在规则rule中使用on属性来设置不同的场景
publicfunctionrules() { return[ [['id'],'integer'], [['user_name'],'required'], [['password'],'required','on'=>'create'] [['user_name','password'],'string','max'=>255], ]; }
根据如上在create场景下password字段必填
三:
使用yiibaseModel::validate()来验证接收到的数据
$model=newUser(); $model->validate(['user_name'])
使用validate方法验证user_name,验证通过返回true,否则返回false
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。