关于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 相关文章推荐
输出控制类
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
PHP 类相关函数的使用详解
May 10 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
php类自动加载器实现方法
Jul 28 PHP
php简单日历函数
Oct 28 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
PHP fclose函数用法总结
Feb 15 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 PHP
php双向队列实例讲解
Nov 17 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/02/21 PHP
php中socket通信机制实例详解
2015/01/03 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
JavaScript脚本性能的优化方法
2007/02/02 Javascript
JQuery 小练习(实例代码)
2009/08/07 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Python2.x与Python3.x的区别
2016/01/14 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
css3实现动画的三种方式
2020/08/24 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
总经理助理工作职责
2014/02/06 职场文书
教师考核材料
2014/05/21 职场文书
应收账款管理制度
2015/08/06 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers