J'ai un formulaire simple qui stocke certaines données dans une base de données, et pour le champ Titre j'ai une règle de validation is_unique ainsi que d'autres règles. Voici mes règles de validation TaskModel :
protected $validationRules = [ 'Title' => 'required|min_length[5]|max_length[15]|is_unique[tasks.Title]', 'Description' => 'required|max_length[300]', 'CreatedAt' => 'required', 'UpdatedAt' => 'required', 'DueDate' => 'required|ValidateDueDate[DueDate]', 'AssignedTo' => 'required', 'Author' => 'required' ];
Maintenant, lors de l'ajout de données à la base de données, tout fonctionne comme prévu. Le problème est que lorsque j'essaie de mettre à jour la notice, disons que j'ai changé le nom de l'auteur, lorsque je soumets le formulaire, il est indiqué que le titre doit être unique. Je veux qu'il ignore la ligne d'enregistrements de la base de données que je modifie et vérifie le caractère unique de l'entrée avec les autres. Pouvez-vous m'aider à y parvenir ? Je pense transmettre l'ID d'enregistrement via le formulaire et l'ignorer lors de la vérification de l'unicité, mais je ne sais pas comment transmettre l'ID à la règle de validation.
Vous pouvez passer l'ID de la ligne en paramètre à la règle is_unique. J'aime
J'espère que cela aide :)
Mise à jour : instructions plus détaillées
Le deuxième paramètre Id est le nom du champ de la base de données. Le troisième est le Id transmis depuis le formulaire. Pour ce faire, ajoutez un champ masqué au formulaire d'édition et définissez son
Idname = Id
et sonvalue=$data['Id']
. Où$data['Id']
est lename = Id
及其value=$data['Id']
。其中$data['Id']
是从数据库获取并传递到视图的行的 Id。因此,当提交表单时,Id 将在$_POST
Id{Id}
de la ligne obtenue de la base de données et transmise à la vue. Ainsi, lorsque le formulaire sera soumis, lesera soumis en
🎜J'espère que cela aide :(🎜🎜$_POST
. Passez-le ensuite aux paramètres de la règle :