关于Yii中模型场景的一些简单介绍


Posted in PHP onSeptember 22, 2019

前言

在Yii中模型字段验证有一个场景的概念,可以在不同的场景下设置不同的验证规则,在Yii中的场景默认为default,简单实现如下

下面我以用户表,表中字段为user_name,password

简单规则如下

public function rules() {
 return [
 [['user_name', 'password'], 'required'],
 [['user_name', 'password'], 'string', 'max' => 255],
 ];
}

一:

如果我们需要在新增时验证user_name和password两个字段,在更新时只验证user_name字段

这时候我们可以在模型中覆盖yiibaseModel::scenarios()方法来自定义行为

public function scenarios()
{
 return [
 'create' => ['user_name', 'password'],//create表示新增场景
 'update' => ['user_name'],//update表示更新场景
 ];
}

根据上面设置的场景规则,我们只需要在我们新增和更新时设置为指定的场景即可

// 场景作为属性来设置
$model = new User;
$model->scenario = 'create';
// 场景通过构造初始化配置来设置
$model = new User(['scenario' => 'create']);

根据如上就可以实现在不同的场景下验证指定的字段

二:

我们可以在规则rule中使用on属性来设置不同的场景

public function rules() 
{
 return [
 [['id'], 'integer'],
 [['user_name'], 'required'],
 [['password'], 'required', 'on' => 'create']
 [['user_name', 'password'], 'string', 'max' => 255],
 ];
}

根据如上在create场景下password字段必填

三:

使用yiibaseModel::validate() 来验证接收到的数据

$model = new User();
$model->validate(['user_name'])

使用validate方法验证user_name,验证通过返回true,否则返回false

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
php修改时间格式的代码
May 29 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
php修改文件上传限制方法汇总
Apr 07 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
php定期拉取数据对比方法实例
Sep 22 #PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 #PHP
php设计模式之单例模式用法经典示例分析
Sep 20 #PHP
php数组和链表的区别总结
Sep 20 #PHP
php输出反斜杠的实例方法
Sep 19 #PHP
php实现session共享的实例方法
Sep 19 #PHP
php进行md5加密简单实例方法
Sep 19 #PHP
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
jQuery 使用个人心得
2009/02/26 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
django项目简单调取百度翻译接口的方法
2019/08/06 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
Python类型转换的魔术方法详解
2020/12/23 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
资深财务管理人员自我评价
2013/09/22 职场文书
金融与证券专业求职信
2014/06/22 职场文书
新闻传播专业求职信
2014/07/22 职场文书
教师四风问题整改措施
2014/09/25 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
2014年终工作总结范本
2014/12/15 职场文书
单位租车协议书
2015/01/29 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
跑吧孩子观后感
2015/06/10 职场文书
nginx内存池源码解析
2021/11/20 Servers
MySQL日期时间函数知识汇总
2022/03/17 MySQL