当用户注册结束时我需要显示错误消息他输入的电子邮件存在。我在我看来试试这个:
cacert.pem command
和这个
<?php echo $form->errorSummary($model, NULL, NULL, array("class" => "standard-error-summary")); ?>
但它没有用。
我的用户模型的规则方法
if($model->hasErrors())
echo CHtml::errorSummary($model);
RegistrationForm模型:
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'),
);
}
和我的注册行动:
public function rules()
{
return array(
array('first_name, repeat_password, last_name, password,email', 'required'),
array('email', 'email'),
array('password', 'compare','compareAttribute'=>'repeat_password'),
);
}
答案 0 :(得分:1)
例如,您验证RegistrationForm
模型,您必须拥有unique
规则(而不是User
模型中的onlu)。因此,您也可以在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'),
);
}
所以不必添加自定义规则。
谢谢!
答案 1 :(得分: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!'),
到规则方法