0

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

4

2 回答 2

0

我不知道 jQUery.FormValidation,但我知道我将如何继续这种功能。这与ZF1中的基本相同。

我会编写一个自定义操作,partialValidationAction()给定一个参数element。现在到那个动作你POST的表格。然后在动作内部,因为它被赋予了 parameter element,所以您将validationGroup表单的 设置为仅这一个元素,然后您将验证表单。

如果元素已验证,则该操作将简单地返回true,如果验证返回 false,则包含错误消息的 JSON 对象。因此,每当您收到带有错误消息的 JSON-Object 时,将它们添加到您的表单元素中,您就完成了。

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

于 2013-09-26T07:20:42.060 回答
0

$('.register-form').validate({ 规则:{

                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.'
                },

            },

        });

在登录控制器中,

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

于 2013-09-27T09:01:08.770 回答