Yii2.0学习第18课:模型(Models)之应用场景
1、运行并访问RegisterController.php,查看需要验证的字段信息:(1)用户名;(2)邮箱;(3)密码。
2、参看“模型之验证规则”的说明,创建(或修改)我们的LoginController.php,得到的需要验证的字段信息:(1)用户名;(2)密码;
3、步骤1和步骤2中使用了同一个app\models\HlongUser.php,我们查看其验证规则,由于两个场景需要验证的信息是不一样的。登陆一般是不需要验证邮箱的。我们当然可以将HlongUser.php拆分长登陆模型和注册模型。但是Yii2.0强大的场景处理,给我们提供了一个很好的方法。
4、打开app\models\HlongUser.php,贴入以下代码:const SCENARIO_LOGIN = 'login'; const SCENARIO_REGISTER = 'register'; public function scenarios() { return [ self::SCENARIO_LOGIN => ['username', 'password'], self::SCENARIO_REGISTER => ['username', 'email', 'password'], ]; }
5、这时候还没有结束,你可以尝试重新访问Login或Register并提交数据会发现如下错误,原因是我们在控制器中没有设置场景,系统调用默认场景default导致出错:
6、分别在两种场景的控制器内添加场景的调用:(1)登陆:$model = new User(['scenario' => 'login']);(1)注册:$model = new User(['scenario' => 'register']);
7、再次访问Login和Register并提交数据,查看效果: