关于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获取网络上文件
Oct 09 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
php中opendir函数用法实例
Nov 15 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
PHP树形结构tree类用法示例
Feb 01 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
关于页面优化和伪静态
2009/10/11 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
python中range()与xrange()用法分析
2016/09/21 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
python适合做数据挖掘吗
2020/06/16 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
工程班组长岗位职责
2013/12/30 职场文书
小学生打架检讨书
2014/01/26 职场文书
交通安全教育制度
2014/02/02 职场文书
酒店节能减排方案
2014/05/26 职场文书
课外活动总结范文
2014/07/09 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
坎儿井导游词
2015/02/09 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript