关于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
Cannot modify header information错误解决方法
Oct 08 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 PHP
PHP实现一维数组转二维数组的方法
Feb 25 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
php生成带logo二维码方法小结
Apr 08 PHP
yii框架搜索分页modle写法
Dec 19 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php中JSON的使用方法
2015/04/30 PHP
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
师范教师毕业鉴定
2014/01/13 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
销售顾问工作计划书
2014/09/15 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
Win10 Anaconda安装python-pcl
2022/04/29 Servers
详解SQL报错盲注
2022/07/23 SQL Server