0
votes

Évitez "Nom d'utilisateur existant déjà" Erreur de validation du nom d'utilisateur lors de la mise à jour du formulaire en Yii2

J'ai un formulaire pour la création d'utilisateurs et je vérifierai le nom d'utilisateur existant à partir de l'une de nos API et je fais une règle avec la fonction de validation personnalisée et sa fonctionnement bien. Mais lors de la mise à jour du formulaire, la fonction personnalisée exécute également et affiche l'erreur "Nom d'utilisateur existant déjà" avec mon nom d'utilisateur.

Mes règles xxx

ma fonction de validation personnalisée, < / p> xxx

ici Ce que je veux, j'ai utilisé le même nom d'utilisateur que la fonction ne fonctionne pas mais j'ai changé à nouveau, puis devez appeler cette fonction pour vérifier unique.


0 commentaires

3 Réponses :


1
votes

Consultez le Validator unique Yii2 unique

HTTPS: / /www.yiiframewarework.com/doc/api/2.0/yi-validators-uniquevalidator p> xxx pré>

Pour vous cas, il pourrait ressembler à p>

['username', 'unique', 'message' => Yii:t('app','Username Already exists')]


4 commentaires

Merci d'avoir répondu, mais pour mon cas, je vérifie une validation unique avec une fonction personnalisée avec mes enregistrements API


Peut-être que vous pouvez utiliser un scénario pour la validation et la joindre à la création d'Action Yiiframework. Com / Doc / Guide / 2.0 / FR / Structure-Models


Ou ajoutez une condition à la fonction uniqueUnessers qui vérifiez si le nom d'utilisateur envoyé par rapport à l'ancien nom d'utilisateur (pour cet utilisateur spécifique) continuez au reste de la fonction.


Merci beaucoup, je vais essayer cette solution.



-1
votes

Vous pouvez le faire avec l'utilisation de scénario; xxx pré>

ou vérifier le modèle est nouveau. P>

public function uniqueUsers($attributes, $params) 
{
    if ($this->isNewRecord){
        // Your validation controls
    }
}


1 commentaires

Cela permettra de changer nom d'utilisateur à une valeur non unique sur la mise à jour de l'enregistrement.



3
votes

Vous pouvez utiliser cela aussi

['username', 'unique', 'when' => function($model) {
                            return $model->isAttributeChanged('username');
                        }],


0 commentaires