我是Zend 2的新手。我创建了一个注册表单,并使用jQuery表单验证插件来验证它。现在我想检查电子邮件是否已经存在(使用zend 2和jQuery表单插件)。任何人都可以帮我实现这个。
答案 0 :(得分:0)
我不知道jQUery.FormValidation,但我知道如何继续关于这种功能。这与ZF1基本相同。
我会编写一个自定义操作,例如partialValidationAction()
,其参数为element
。现在,您需要POST
您的表格。然后,在操作中,由于给定了参数element
,因此您只需将表单的validationGroup
设置为此元素,然后验证表单。
如果元素已经过验证,则操作将返回true
,如果验证返回false,则返回包含错误消息的JSON-Object。因此,每当您收到带有错误消息的JSON-Object时,请将它们添加到表单元素中,然后就完成了。
我这样做有几个原因,一个是可维护性。来自jQuery的formValidation IIRC需要在JS-Code中设置规则,对吧?这意味着你必须在两个不同的地方维护你的验证规则,这通常是一件坏事,并且几乎总是导致规则不匹配。
答案 1 :(得分:0)
$( '寄存器形式')。验证({ 规则:{
email: {
required: true,
email: true,
remote: {
url: baseUrl+'/login/emailcheck',
type: 'POST',
data: {
mail: function(){ return $("#email").val(); }
},
}
},
},
messages: { // custom messages
email: {
required: "Email is required.",
remote: 'Email already Exists.'
},
},
});
并在Logincontroller中,
public function emailcheckAction(){
$email = $_POST['mail'];
$result = $this->getRegistrationInfoTable()->getEmail($email);
if($result){
$value = false; //'Email already exists';
}else{
$value = true;
}
$result = new JsonModel(array(
'response' => $value
));
return $result;
}
我编辑了jquery.validate.js以响应json数组。 现在它工作得很好:)