2013-09-26 130 views
0

我是Zend 2中的新成员。我创建了一个注册表单并使用jQuery表单验证插件来验证它。现在我想检查电子邮件是否已经存在(使用zend 2和jQuery表单插件)。任何人都可以帮我实施这个。Zend2表单验证jQuery表单验证插件

回答

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,

公共函数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数组。 现在它工作正常:)

0

我不知道jQUery.FormValidation,但我知道我将如何去关于这种功能。这与ZF1基本相同。

我会写一个自定义动作,如partialValidationAction(),它给出了一个参数element。现在到那个行动,你会在你的表格中输入POST。在动作内部,由于它的参数为element,因此您只需将表单的validationGroup设置为仅包含这一个元素,然后验证表单。

如果元素已验证,则操作将简单地返回true,如果验证返回false,则操作将包含错误消息的JSON对象。所以每当你得到一个带有错误信息的JSON对象时,将它们添加到你的表单元素中就完成了。

我会这样做,有几个原因,一个是可维护性。 IIRC从jQuery formValidation需要在JS代码中设置规则,对吧?这意味着你必须在两个不同的地方维护你的验证规则,这通常是一件坏事,并且总会导致规则不匹配。