使用jQuery表单验证插件进行Zend2表单验证

时间:2013-09-26 06:28:50

标签: jquery zend-framework2 jquery-validate

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

2 个答案:

答案 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数组。 现在它工作得很好:)