关于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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
php 友好URL的实现(吐血推荐)
Oct 04 PHP
又一个php 分页类实现代码
Dec 03 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 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获取金书网的书名的实现代码
2010/06/11 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
CI框架常用方法小结
2016/05/17 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
jQuery 阴影插件代码分享
2012/01/09 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
移动端js图片查看器
2016/11/17 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
35个Python编程小技巧
2014/04/01 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
python和shell获取文本内容的方法
2018/06/05 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
Python修改DBF文件指定列
2020/12/19 Python
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
开会迟到检讨书
2014/02/03 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS