2015-07-01 77 views
0

显示错误验证消息如何,我需要显示错误消息,当用户注册结束时,他输入电子邮件,其中exist.I尝试这种在我看来:在警予

<?php echo $form->errorSummary($model, NULL, NULL, array("class" => "standard-error-summary")); ?> 

if($model->hasErrors()) 
    echo CHtml::errorSummary($model); 

但不起作用。

还有就是我的规则,用户模型

public function rules() 
{ 
    return array(
     array('status', 'numerical', 'integerOnly'=>true), 
     array('first_name, last_name, email, password', 'length', 'max'=>255), 
     array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'), 
     array('id, status, first_name, last_name, email, password', 'safe', 'on'=>'search'), 
    ); 
} 

RegistrationForm型号的方法:

public function rules() 
{ 
    return array(
     array('first_name, repeat_password, last_name, password,email', 'required'), 
     array('email', 'email'), 
     array('password', 'compare','compareAttribute'=>'repeat_password'), 
    ); 
    } 

,我的注册动作:

public function actionRegister() 
{ 
    $model = new RegistrationForm; 
    if(isset($_POST['RegistrationForm'])) 
    { 
     $model->attributes = $_POST['RegistrationForm']; 
     if($model->validate()) 
     { 
      $user = new User; 
      $user->first_name = $model->first_name; 
      $user->last_name = $model->last_name; 
      $user->password = $model ->password; 
      $user->email = $model->email; 
      $user->save(); 
     } 
    } 
    $this->render('register',array('model'=>$model)); 
} 

回答

0

我找到了解决方案。我在RegisterationForm型号

public function uniqueEmail($attribute, $params) 
{ 
    if($user = User::model()->exists('email=:email',array('email'=>$this->email))) 
     $this->addError($attribute, 'Email already exists!'); 
} 

添加了此方法,并添加

array('email', 'uniqueEmail','message'=>'Email already exists!'), 

的规则方法

0

如您验证RegistrationForm模式,你必须对自己的unique规则(不onlu在User模型)。所以,你可以在你的RegistrationForm模型添加这个规则太:

public function rules() 
{ 
    return array(
     array('first_name, repeat_password, last_name, password,email', 'required'), 
     array('email', 'email'), 
     // THIS RULE CHECKS EMAIL UNIQUE IN RegistrationForm MODEL 
     array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'), 
     array('password', 'compare','compareAttribute'=>'repeat_password'), 
    ); 
} 

所以没有没有必要添加自定义规则。

谢谢!