Yii:规则检查不同的场景

时间:2014-04-17 10:23:58

标签: php validation yii

我想在一个控制器中检查不同的验证。

我有问题是,

当用户第一次注册时,我想进行以下验证

 array('name, email, password, location, confirm_password', 'required','on'=>'create'), 
 array('confirm_password', 'compare', 'compareAttribute' =>  'password','on'=>'create,fbuser'),     
 array('email','unique','on'=>'create'),

如果用户已在FB注册并尝试注册,那么我想进行以下验证(在这种情况下我不想验证电子邮件地址)

   array('name, password, location, confirm_password', 'required','on'=>'fbuser'), 
   array('confirm_password', 'compare', 'compareAttribute' => 'password','on'=>'create,fbuser'),

这是我的控制器方法...

    public function actionCreate()
    {
            $model=new AppUser('create');

            if(!Yii::app()->user->isGuest)
                $this->redirect('/');

            if(Yii::app()->request->isPostRequest)
            {
                    if($model->isFbUser($_POST['email'])){
                        $model->scenario = 'fbuser';
                        if($model->validate())
                            $this->redirect(array('/Appuser/fbauth','email'=> $_POST['email']));
                    }
                    else
                        $model->scenario = 'create';

                    $model->attributes=$_POST;
                    if($model->save())
                            $this->redirect('/login');
            }

            $this->render('create',array(
                    'model'=>$model,
            ));
    }

但是没有正确验证。

任何人都可以帮我解决吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

我认为问题可能是,在if(isFbUser)子句中,您在验证之前没有将后期数据分配给模型。

您对场景的使用对我来说很好。