关于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 相关文章推荐
PHP用mysql数据库存储session的代码
Mar 05 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
php开发微信支付获取用户地址
Oct 04 PHP
php将html转为图片的实现方法
May 19 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 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 变量未定义等错误的解决方法
2011/01/12 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
Python 实现try重新执行
2019/12/21 Python
python连接PostgreSQL过程解析
2020/02/09 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
Java如何格式化日期
2012/08/07 面试题
一道Delphi上机题
2012/06/04 面试题
学期自我鉴定
2013/11/04 职场文书
法学院方阵解说词
2014/01/29 职场文书
家长评语和期望
2014/02/10 职场文书
中式结婚主持词
2014/03/14 职场文书
房产转让协议书
2014/04/11 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
杨善洲电影观后感
2015/06/04 职场文书
数学备课组工作总结
2015/08/12 职场文书
校运会班级霸气口号
2015/12/24 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL