如何在yii中显示重复属性错误验证消息
我需要在用户注册结束时显示错误消息,以输入存在的电子邮件。我在我的视图中尝试此操作:如何在yii中显示重复属性错误验证消息,yii,cactiverecord,yii-cformmodel,Yii,Cactiverecord,Yii Cformmodel,我需要在用户注册结束时显示错误消息,以输入存在的电子邮件。我在我的视图中尝试此操作: <?php echo $form->errorSummary($model, NULL, NULL, array("class" => "standard-error-summary")); ?> 但它不起作用 这是我的用户模型的规则方法 public function rules() { return array( array('status', 'n
<?php echo $form->errorSummary($model, NULL, NULL, array("class" => "standard-error-summary")); ?>
但它不起作用
这是我的用户模型的规则方法
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'),
);
}
我的注册行动:
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));
}
我找到了解决办法。我在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!'),
对于规则方法,例如验证
注册表单
模型,必须在其中包含唯一的
规则(而不仅仅是用户
模型中的规则)。因此,您也可以将此规则添加到您的注册表单
模型中:
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'),
);
}
因此,无需添加自定义规则
谢谢
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'),
);
}