在用 YII 进行二次开发的时候, 看到登录方法有一个 load 的方法:
- public function actionLogin()
- {
- if (Yii::$App->request->isPost){
- $loginForm = new LoginForm();
- $postData = Yii::$App->request->post();
- if ($loginForm->load($postData, '') && $loginForm->login()) {
- return $this->ajaxReturnSuccess();
- }else{
- return $this->ajaxReturnError($loginForm->getError());
- }
- }else{
- return $this->render('account/index.html');
- }
- }
但是在模型上, 看不到 load 方法, 就此认为是 YII 的方法: load 方法用于加载数据, 例如 validate 方法是验证方法, 更新和添加用的是 save() 方法.
yii 通过 $model->isNewRecord 来判断是不是一条新纪录, 然后调用 insert() 或者 update().
load() 和 setAttributes() 方法都属于批量赋值, yii 为了保护数据的安全性, 是禁止批量赋值的, 但是当数据符合 rule 规则的时候就可以批量赋值了, 所以没写 rules 就不能用 load(). 就算某个字段不需要什么规则, 用户输入什么都可以, 那么要把这个字段的规则设置 safe, 一般 gii 生成的 model 最后一行都是 safe 的.
你可以不用 validate(), 因为 save 方法会先调用 validate() 再执行 insert() 或者 update()(看源码就知道).
来源: http://www.bubuko.com/infodetail-2865444.html