关于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 相关文章推荐
记录mysql性能查询过程的使用方法
May 02 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php简单备份与还原MySql的方法
May 09 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
Laravel框架实现调用百度翻译API功能示例
May 30 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 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
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
vue实现拖拽效果
2019/12/23 Javascript
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
Python 爬虫的原理
2020/07/30 Python
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
工业设计专业推荐信
2013/10/29 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL