La validation de la règle is_unique dans Codeigniter 4 génère une erreur non unique lors de la mise à jour de l'enregistrement
P粉617597173
P粉617597173 2024-01-10 16:31:46
0
1
520

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.

P粉617597173
P粉617597173

répondre à tous(1)
P粉752479467

Vous pouvez passer l'ID de la ligne en paramètre à la règle is_unique. J'aime

is_unique[tasks.Title,Id,{Id}]

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 name = Id et son value=$data['Id']. Où $data['Id'] est le name = Id 及其 value=$data['Id']。其中 $data['Id'] 是从数据库获取并传递到视图的行的 Id。因此,当提交表单时,Id 将在 $_POSTId{Id} de la ligne obtenue de la base de données et transmise à la vue. Ainsi, lorsque le formulaire sera soumis, le

Id

sera soumis en $_POST. Passez-le ensuite aux paramètres de la règle :

🎜J'espère que cela aide :(🎜🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal