たとえば、入力フィールドがある場合:
- ユーザーの電子メール:
- ユーザーの電話番号:
- ユーザー旧パスワード:
- ユーザーの新しいパスワード:
- ユーザー再入力パスワード:
また、アクションの更新では、UserOldPassword が空でない場合にのみ UserNewPassword を要求します。それ以外の場合、更新する必要があるのは UserEmail または UserPhoneNumber のいずれかだけです。このルールをどのように実装しますか?更新時のみ? または、モデルにカスタム バリデータを作成する必要がありますか?
私の afterFind() では、ハッシュ化されたパスワードの出力を回避するために次のコードがあります。
public function afterFind()
{
//reset the password to null because we don't want the hash to be shown.
$this->old_password = $this->password;
$this->password = null;
parent::afterFind();
}
カスタム検証を作成しました。検証は行いますが、空の UserNewPassword を指定してフォームを送信してもエラーが発生し、$this->password フィールドがデータベースからハッシュ値を返すようになりました
私のコードを見て、私の間違いを修正してください:
public function checkForEmpty($attribute,$params){
if(!empty($this->$attribute)){
if(empty($params['oldPassword'])){
$this->addError('oldPassword','We require your old password to proceed changing password');
}
if(empty($params['retypePassword'])){
$this->addError('retype_password','To assure that you type the right password please retype your password');
}
if(!empty($params['oldPassword']) && !empty($params['retypePassword'])){
$this->compareOldPass($params['oldPassword'],$this->old_password);
}
}
}
前もって感謝します...