博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Yii2学习笔记之场景
阅读量:6950 次
发布时间:2019-06-27

本文共 1129 字,大约阅读时间需要 3 分钟。

场景

  一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则。例如, User 模型可能在用户登录时使用,也可能在用户注册时使用,某些属性可能在用户注册时强制要求有,在用户登录时不需要,例如email属性。

  模型使用 yii\base\Model::scenario 属性保持使用场景的跟踪, 默认情况下,模型支持一个名为 default 的场景, 两种设置场景的方法:

//场景作为属性来设置$model = new User;$model -> scenario = 'login';//场景通过构造初始化配置来设置$model = new User(['scenario' => 'login']);

  默认情况下,模型支持的场景由模型中申明的验证规则来决定,为此你可以指定规则的 on 属性,如下所示:

public function rules(){    return [        // 在"register" 场景下 username, email 和 password 必须有值        [['username', 'email', 'password'], 'required', 'on' => 'register'],        // 在 "login" 场景下 username 和 password 必须有值        [['username', 'password'], 'required', 'on' => 'login'],    ];}

   但你可以通过 yii\base\Model::scenarios() 方法来自定义行为, 如下所示:

namespace app\models;use yii\db\ActiveRecord;class User extends ActiveRecord{    const SCENARIO_LOGIN = 'login';    const SCENARIO_REGISTER = 'register';    public function scenarios()    {        return [            self::SCENARIO_LOGIN => ['username', 'password'],            self::SCENARIO_REGISTER => ['username', 'email', 'password'],        ];    }}

 

转载于:https://www.cnblogs.com/xiaopiyuanzi/p/5946140.html

你可能感兴趣的文章
tensorflow 安装
查看>>
洗礼灵魂,修炼python(76)--全栈项目实战篇(4)—— 购物车系统
查看>>
利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用
查看>>
C#排序算法
查看>>
[NOI2009]变换序列
查看>>
Dubbo项目一段时间后提供者消失
查看>>
oracleXE版本相关问题整理
查看>>
前台取json对象中的数据
查看>>
防火墙技术 配置基于区域策略的防火墙
查看>>
HTTP协议的理解
查看>>
bzoj 2301: [HAOI2011] Problem b
查看>>
牛客21天刷题_day#1
查看>>
xmlhelper类
查看>>
anisotropy texture filtering
查看>>
java list 遍历方式比较
查看>>
百度美图
查看>>
JPEGOPTIM压缩优化
查看>>
js ES6 多行字符串 连接字符串
查看>>
转:最佳实践:更好的设计你的 REST API
查看>>
Facebook被指“山寨”,背后真相是“炒作”还是……
查看>>