2017-10-11 10 views
0

Il est toujours dit "Cette valeur est déjà utilisée" même si elle n'est pas encore présente dans la base de données.Qu'arrive-t-il à ma validation avec cakephp3.4.13?

Parfois, il dira: « Ce champ ne peut être vide »

public function validationDefault(Validator $validator) 
    { 

$validator 
    ->integer('id') 
    ->allowEmpty('id', 'create'); 

    $validator->requirePresence('username', 'Please enter username.'); 
$validator 
    ->requirePresence('password', 'create') 
    ->notEmpty('password', 'You must enter a password', 'create') 
     ->add('password', [ 
      'length' => [ 
      'rule' => ['minLength', 8], 
      'message' => 'Passwords must be at least 8 characters long.', 
     ] 
    ]); 
$validator 
    ->requirePresence('age', 'create') 
    ->notEmpty('age'); 
$validator 
    ->requirePresence('address', 'create') 
    ->notEmpty('address'); 
$validator 
    ->email('email') 
    ->requirePresence('email', 'create') 
    ->notEmpty('email'); 
$validator 
    ->requirePresence('gender', 'create') 
    ->notEmpty('gender'); 
return $validator; 
    } 


public function buildRules(RulesChecker $rules) 
    { 
     $rules->add($rules->isUnique(['username'])); 
     $rules->add($rules->isUnique(['email'])); 
     return $rules; 
    } 


    <?php 
    namespace App\Model\Entity; 
    use Cake\Auth\DefaultPasswordHasher; 
    use Cake\ORM\Entity; 

    /** 
    * User Entity. 
    */ 
    class User extends Entity 
    { 

     protected $_accessible = [ 
     '*' => true, 
     'id' => false 
     ]; 
     protected function _setPassword($password) 
     { 
      return (new DefaultPasswordHasher)->hash($password); 
     } 
    } 
?> 

Je ne peux pas enregistrer ou ajouter des données maintenant, à la différence avant que je puisse ajouter ou vous inscrire, je récemment mis à jour la version de mon CakePHP, je a également ajouté, le sexe, l'adresse et les champs dans la base de données âge

Im un débutant,

+0

Qu'y a-t-il dans vos règles de construction? – rrd

+0

J'ai ajouté le code ci-dessus bro @rrd –

+0

Les messages d'erreur signifie que vous essayez d'enregistrer un enregistrement avec le même nom d'utilisateur que vous avez déjà dans la base de données – rrd

Répondre

0

je suis tombé sur cette question moi-même et le coupable a été pour moi l'appel « isUnique » sur le terrain. Mon problème était le champ email et il n'avait pas besoin d'être unique. En outre, après avoir modifié un modèle dans un environnement de production, vous devez effacer le cache pour que les champs nouvellement soumis soient placés dans la base de données. 'cache cache clear_all'.

Je n'ai pas pu poster un commentaire.

+0

Je commente déjà l'isunique dans buildRules, et effacer tout le cache mais l'erreur se produisent encore –

+0

s'il vous plaît envoyez-moi des codes –

+0

'dd ($ user); 'après PatchEntity et après Users-> save(). Cela vous montrera s'il existe une sorte d'erreur de formulaire ou si les données ne sont pas corrigées dans l'entité. – Nocare