Maison  >  Questions et réponses  >  le corps du texte

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

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粉617597173P粉617597173257 Il y a quelques jours426

répondre à tous(1)je répondrai

  • P粉752479467

    P粉7524794672024-01-11 11:36:11

    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 :(🎜🎜

    répondre
    0
  • Annulerrépondre