Yii2学习笔记之场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2学习笔记之场景相关的知识,希望对你有一定的参考价值。

场景

  一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则。例如, 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‘],
        ];
    }
}

 

以上是关于Yii2学习笔记之场景的主要内容,如果未能解决你的问题,请参考以下文章

yii2源码学习笔记(三)

yii2源码学习笔记(十九)

yii2源码学习笔记(十六)

关于yii2学习笔记:gii的使用

DOM探索之基础详解——学习笔记

[moka同学笔记]yii2场景的使用(摘录)