关于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 相关文章推荐
source.php查看源文件
Dec 09 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
深入理解php的MySQL连接类
Jun 07 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
Linux下php5.4启动脚本
Aug 03 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
php post换行的方法
Feb 03 PHP
PHP 实现链式操作
Mar 09 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写的serv-u的web申请账号的程序
2006/10/09 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
javascript基本语法
2016/05/31 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
django实现分页的方法
2015/05/26 Python
python基础知识小结之集合
2015/11/25 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python多任务及返回值的处理方法
2019/01/22 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
优秀学生干部个人的自我评价
2013/10/04 职场文书
校本教研工作方案
2014/01/14 职场文书
大学生社会实践方案
2014/05/11 职场文书
大学生就业自荐书
2014/06/16 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
公历12个月名称的由来
2022/04/12 杂记