1

J'ai un backend Laravel 5.4 avec des règles de validation tout mis en place et fonctionne bien.jQuery validation à distance sur créer vs mise à jour

J'ai également mis en œuvre le plugin jQuery Validation pour la validation du côté client pour une meilleure expérience et utilisé avec succès pour tester la validation à distance.

Ainsi, par exemple la vérification d'une adresse e-mail unique lors de l'ajout d'une entité:

$("#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.' 
    } 
} 

});

Cela fonctionne parfaitement.

Questions:

  1. L'exemple ci-dessus fonctionne très bien lorsque j'ajoute une nouvelle entité. Je voudrais également valider sur les mises à jour, mais dans ce cas, il devrait exclure l'entité actuelle lors de la vérification d'un e-mail unique. Cela signifierait que je dois aussi transmettre la clé primaire de l'entité actuelle. Mon approche est-elle correcte, et l'attribut "data" serait-il l'approche recommandée?

  2. Est-il possible d'accéder à l'attribut "action" du formulaire courant et de l'envoyer en tant que variable "data".

La raison pour laquelle je demande est que l'intérieur de la Laravel « Modifier » forme, l'identifiant de l'entité fait partie de l'URL d'action (par exemple/clients/modifier/1234) et pas vraiment dans un champ caché. Donc, si je peux obtenir l'action et envoyer sa valeur, je peux extraire l'ID et vérifier l'unicité, sauf pour cette entité. J'utilise Route Model binding dans le cas où c'est pertinent

Merci!

Répondre

1

Avec jquery validate, vous pouvez l'utiliser comme les options jquery ajax. Cela dit, vous pouvez spécifier la propriété de données. Cette propriété peut prendre une valeur statique ou une fonction pour renvoyer une valeur dynamique (l'attribut d'action du formulaire que vous soumettez dans votre cas)

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

Merci, cela a fonctionné! Je pensais que j'ai essayé mais je suppose que je faisais quelque chose de mal :) – seekay