douao2019 2013-12-12 05:13
浏览 260
已采纳

$ this-> addError在yii模型类中不起作用

I am trying to do the custom validation.All is working fine except $this->addError .
It is not adding the error as it should. this is my controller action

public function actionVerifyAnswer()
    {

        if(isset(Yii::app()->session['_emailId']))
        {
        $model=new LoginForm;
        $model->scenario='verifyAns';
        if(isset($_POST['LoginForm']))
        {

            $model->attributes=$_POST['LoginForm'];
            if($model->validate())
            {
            $theQuestion=$model->secretQuestion;
            $theAnswer=  strtolower($model->verifyAnswer);
            $usersModel=new Users;

            $emailUser=  Yii::app()->session['_emailId'];

            $userRecord=$usersModel->find('loginEmail=:email AND secretQuestion=:que',array(':email'=>$emailUser,':que'=>$theQuestion));
            if(empty($userRecord))
            {   
                throw new CHttpException('You have selected the wrong question');
            }
            else
            {
                $usersAnswer=  strtolower($userRecord->secretAnswer);
                if($theAnswer === $usersAnswer)
                {

                    $this->redirect('changePassword');
                }
                else
                {

                    throw new CHttpException('you have given the wrong answer');
                }
            }


        }
        else
        {
            throw new CHttpException('model->validate()');
        }
        }
        else
        {

             $secretQuestion= Yii::app()->params['secretQuestion'];
               $this->render('verifyAnswer', array('model'=>$model,
                                                    'secretQuestion'=>$secretQuestion,

                   ));
        }
        }
        else
        {

           Yii::app()->user->loginRequired();
        }

    }

and this is my custom validation in the model

public function checkQuestion()
    {
        if(!$this->hasErrors())
        {
            $model=new LoginForm;
            $theQuestion=$this->secretQuestion;
            $usersModel=new Users;
            $emailUser=  Yii::app()->session['_emailId'];
            $userRecord=$usersModel->find('loginEmail=:email AND secretQuestion=:que',array(':email'=>$emailUser,':que'=>$theQuestion));
            if(empty($userRecord))
            {   
                //this line is not working

                $this->addError('secretQuestion', 'Incorrect Combination');

                //if i throw exception here. Then exception is working
            }
        }
    }

How can i make $this->addError working?

  • 写回答

2条回答 默认 最新

  • drob50257447 2013-12-12 11:00
    关注

    I have solved the issue and i am posting the answer because it might help somebody else also. I needed to remove the

    else{
    
    //not the code inside
    
    }
    

    of this condition

    if(isset($_POST['LoginForm']))
            {
    

    Note:- I just removed the else and its braces {} and left the code inside the else

    as it was i.e :-

    $secretQuestion= Yii::app()->params['secretQuestion'];
                   $this->render('verifyAnswer', array('model'=>$model,
                                                        'secretQuestion'=>$secretQuestion,
    
                       ));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵