关于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 图像处理类1
Jun 15 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
PHP生成随机密码类分享
Jun 25 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
php实现等比例压缩图片
Jul 26 PHP
php实现将数据做成json的格式给前端使用
Aug 21 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模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
Django 内置权限扩展案例详解
2019/03/04 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
Python如何将字符串转换为日期
2020/07/31 Python
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
总经理驾驶员岗位职责
2013/12/04 职场文书
护理专科自荐书范文
2014/02/18 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
一年级小学生评语大全
2014/12/25 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
2015新员工工作总结范文
2015/10/15 职场文书