一个修改密码的功能,收集表单后load方法返回 false ,大神帮忙查看是什么原因 [ 2.0 版本 ]
控制器
public function actionPassword()
{
$model = new PasswordForm;
$request = Yii::$app->request;
$res=$model->load(Yii::$app->request->post());
var_dump($res);
if($request->isPost && $model->load(Yii::$app->request->post()) && $model->changePassword())
{
//echo "123";
Yii::$app->user->logout();
return $this->goHome();
}else{
return $this->render('modify-password',['model'=>$model]);
}
}
model
<?php
namespace frontend\models;
use Yii;
use yii\base\model;
use common\models\User;
class PasswordForm extends model
{
public $password;
public $pass1;
public $pass2;
public static function tableName()
{
return 'user';
}
public function changePassword()
{
$id = Yii::$app->user->id;
$admin= User::findIdentity($id);
$password = $admin->password_hash;
if(Yii::$app->getSecurity()->validatePassword($this->password, $password)){
if($this->pass1 == $this->pass2){
$newPass = Yii::$app->getSecurity()->generatePasswordHash($this->pass1);
$admin->password_hash = $newPass;
if($admin->save()){
return true;
}else{
return false;
}
}else{
Yii::$app->session->setFlash('contact','两次新密码不相等');
return false;
}
}else{
Yii::$app->session->setFlash('contact','旧密码错误');
return false;
}
}
}
视图
<?= Html::beginForm(['password'], 'post', ['enctype' => 'multipart/form-data']) ?>
<div class="pass">
<p class="pass-box">
<img src="<?=$baseUrl?>images/srmm.png" />
<!--<input type="password" name="old" placeholder="输入旧密码…" />-->
<?=Html::input('password','model[password]','',['placeholder'=>'输入旧密码…']) ?>
</p>
<!--<span>旧密码错误</span>-->
</div>
<div class="pass">
<p class="pass-box">
<img src="<?=$baseUrl?>images/srmm.png" />
<!--<input type="password" name="new" placeholder="输入新密码…" />-->
<?=Html::input('password','model[pass1]','',['placeholder'=>'输入新密码…']) ?>
</p>
<!--<span>新密码不符合</span>-->
</div>
<div class="pass">
<p class="pass-box">
<img src="<?=$baseUrl?>images/srmm.png" />
<!--<input type="password" name="old" placeholder="再次输入新密码…" />-->
<?=Html::input('password','model[pass2]','',['placeholder'=>'输入新密码…']) ?>
</p>
<!--<span>2次密码输入不一致</span>-->
</div>
</div>
<p class="btn">
<!--<button>保 存</button>-->
<?=Html::submitButton('保 存')?>
</p>
</div>
<?= Html::endForm() ?>
最佳答案
-
PasswordForm 中增加下面规则:
``
public function rules() { return [ [['password', 'pass1','pass2','其他属性也都加进来'], 'safe'], ]; }
共 3 条回复lihuan3535 回复于 2016-05-30 11:23 回复不行,load还是false
lihuan3535 回复于 2016-05-30 15:53 回复这次对了,之前是视图改对了,model没加rules方法。最后,谢谢。
lihuan3535
注册时间:2015-08-16
最后登录:2016-08-19
在线时长:9小时35分
最后登录:2016-08-19
在线时长:9小时35分
- 粉丝0
- 金钱15
- 威望0
- 积分105