我想在一个控制器中检查不同的验证。
我有问题是,
当用户第一次注册时,我想进行以下验证
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,
));
}
但是没有正确验证。
任何人都可以帮我解决吗?
提前致谢
答案 0 :(得分:1)
我认为问题可能是,在if(isFbUser)子句中,您在验证之前没有将后期数据分配给模型。
您对场景的使用对我来说很好。