0
我想在一个控制器中检查不同的验证。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,
));
}
但它没有正确验证。
任何人都可以帮我解决它吗?
在此先感谢
isFbUser是我的函数,基于某些条件返回true或false,如果我删除所有验证,它的工作正常。 –
我相信你是isFbUser正在工作,但是如果它返回true,你将在$ model-> validate()之后执行两行。您尚未将发布数据分配给您的模型,因此模型数据无法验证。 – i4h
非常感谢..它是一个非常愚蠢的错误,我做了 –