首页 > 代码库 > Yii2学习笔记之场景
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学习笔记之场景
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。