原文转自 IT技术擎
有的项目中希望在不同的场景中,需求不一样。
比如说 email 属性在注册时强制要求有,但在登陆时不需要
这样我们就出现了两个场景
一个是登录 login
一个是注册 register
解决的办法是在对应的model里面添加一个公共的方法
public function scenarios()
然后在该方法里面添加我们自己定义的场景
代码如下
public function scenarios()
{
$parent_scenarios = parent::scenarios();//继承父类的场景
//定义自己的场景
$self_scenarios = [
'login' => ['username', 'password'],//登录的时候需要的字段
'register' => ['username', 'email', 'password'],//注册的时候需要的字段
];
//合并场景
return array_merge($parent_scenarios,$self_scenarios);
}