关于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 CKEditor 上传图片实现代码
Nov 06 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
Mar 18 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
php中实现字符串翻转的方法
Feb 22 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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中对用户身份认证实现两种方法
2011/06/04 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
浅谈php自定义错误日志
2015/02/13 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
python实现xlsx文件分析详解
2018/01/02 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python使用turtle库绘制树
2018/06/25 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
pandas DataFrame运算的实现
2020/06/14 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
android面试问题与答案
2016/12/27 面试题
小学捐书活动总结
2014/07/05 职场文书
租房安全协议书
2014/08/20 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
2014年领班工作总结
2014/11/25 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
如何Python使用re模块实现okenizer
2022/04/30 Python