在create vs update

时间:2017-03-09 01:08:55

标签: jquery validation laravel-5 jquery-validation-engine remote-validation

我有一个Laravel 5.4后端,验证规则全部设置并且工作正常。

我还为客户端验证实现了jQuery Validation插件以获得更好的体验,并成功使用它来测试远程验证。

例如,在添加实体时检查唯一的电子邮件地址:

$("#customerForm").validate({
rules: {
    name: "required",
    email: {
        required: true,
        email: true,
        remote: {
            url: "/api/admin/customers/checkuniqueemail",
            type: "post",
            async: false,
            complete: function(data) {
                if (data.responseText == "true") { //i.e. email is unique
                    // show some feedback
                } 
            }
        }
    }
},
messages: {
    email: {
        remote: 'The email has already been taken.'
    }
}

});

这很有效。

问题:

  1. 当我添加新实体时,上面的示例效果很好。我还想验证更新,但在这种情况下,它应该在检查唯一的电子邮件时排除当前实体。这意味着我还需要传递当前实体的主键。我的方法是否正确,"data"属性是推荐的方法吗?

  2. 有没有办法可以访问当前表单的“action”属性并将其作为“数据”变量发送。

  3. 我问的原因是在Laravel“编辑”表单中,实体ID是动作URL的一部分(例如/ customers / edit / 1234),而不是真正在隐藏字段中。因此,如果我能够获得“行动”并发送其价值,我可以提取ID并检查除该实体之外的唯一性。我正在使用Route Model binding,以防它相关

    谢谢!

1 个答案:

答案 0 :(得分:1)

使用jquery validate,您可以像使用jquery ajax选项一样使用它。话虽如此,您可以指定数据属性。此属性可以采用静态值或函数来返回动态值(您在案例中提交的表单的action属性)

data: {'customer_id':function(){ return $('#customerForm').attr("action") } }