2014-09-22 65 views
0

我正在编写用户的功能以更改Yii框架内的密码。视图要求用户输入两次他的当前密码和他的新密码。旧密码一起我在模型中添加了以下方法。从模型中的函数向视图添加错误

public function findPassword(){ 
     $user = Users::model()->findByPk(Yii::app()->user->id); 
     if(password_verify($user->password,$this->oldPassword) !== true){ 
      $this->addError($this->attribute,'Old password is incorrect'); 
     } 
    } 

我在模型里面有下面的规则。

array('old_password', 'findPassword', 'on' => 'changePwd'), 

当我做到这一点,走在表格上,并试图更改密码,我得到以下error

回答

1

试试这个:

public function findPassword(){ 
    $user = Users::model()->findByPk(Yii::app()->user->id); 
    if(password_verify($user->password,$this->oldPassword) !== true){ 
     $this->addError('old_password','Old password is incorrect'); 
    } 
} 

例子:http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/

+0

它给我以下错误未定义的变量:属性这是有道理的,因为函数内部没有$属性。是一个很好的做法,我使用模型中的setFlash函数或者我应该只使用控制器内部的那些类型的错误。 – Steve 2014-09-22 14:18:55

+0

好吧,我编辑我的答案。控制器中的SetFlash。 – 2014-09-22 14:25:16

+0

好的,谢谢你的帮助。 – Steve 2014-09-22 14:30:48