我有一个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.'
}
}
});
这很有效。
问题:
当我添加新实体时,上面的示例效果很好。我还想验证更新,但在这种情况下,它应该在检查唯一的电子邮件时排除当前实体。这意味着我还需要传递当前实体的主键。我的方法是否正确,"data"属性是推荐的方法吗?
有没有办法可以访问当前表单的“action”属性并将其作为“数据”变量发送。
我问的原因是在Laravel“编辑”表单中,实体ID是动作URL的一部分(例如/ customers / edit / 1234),而不是真正在隐藏字段中。因此,如果我能够获得“行动”并发送其价值,我可以提取ID并检查除该实体之外的唯一性。我正在使用Route Model binding,以防它相关
谢谢!
答案 0 :(得分:1)
使用jquery validate,您可以像使用jquery ajax选项一样使用它。话虽如此,您可以指定数据属性。此属性可以采用静态值或函数来返回动态值(您在案例中提交的表单的action属性)
data: {'customer_id':function(){ return $('#customerForm').attr("action") } }