Yii2里 model在使用load方法加载浏览器的值的时候,会进行rules验证。这时候可以使用场景,让model对不同场景使用不同验证方式:
model中:
//设定在不同场景下面验证的规则
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios['login'] = ['username', 'password'];
$scenarios['register'] = ['username', 'email', 'password'];
return $scenarios;
}
在model中的rules:
public function rules()
{
return [
//指定场境验证
[['username', 'password'], 'required', 'on' => ['login']],
[['username', 'password', 'email'], 'required', 'on' => ['register']],
];
}
使用方法:
//使用方法一
//$model = new SignupForm(['scenario'=>'login']);
//使用方法二
//$model = new SignupForm();
//$model->setScenario("login");
//方法三
$model = new SignupForm();
$model->scenario ="login";