2016-01-13 1 views
0

J'ai un formulaire frontal pour ajouter un nouvel utilisateur. En outre, il doit ajouter la société Users à la table Companies et définir l'ID société du nouvel utilisateur sur le nouvel ID société. Sur soumettre, j'obtiens une erreur "Impossible d'ajouter l'utilisateur".cakephp 3. * save belongsTo data

(son utilisateur une association belongsTo Company)

En UsersController.php:

public function add() 
{ 
    $this->viewBuilder()->layout('login'); 
    $user = $this->Users->newEntity($this->request->data,['associated' => ['Companies']]); 
    if ($this->request->is('post')) { 
     $user = $this->Users->patchEntity($user,['associated' => ['Companies']]); 
     if ($this->Users->save($user)) { 
      $this->Flash->success(__('The user has been saved.')); 
      return $this->redirect(['action' => 'login']); 
     } 
     $this->Flash->error(__('Unable to add the user.')); 
    } 
    $this->set('user', $user); 

    $this->loadModel('Companies'); 
    $this->set('companies', $this->Companies->find('all',array('fields'=>array('name','id')))); 
} 

Le débogage du $ this-> request-> retours de données:

Array 
(
    [username] => the name 
    [email] => [email protected] 
    [password] => test 
    [company] => Array 
     (
      [name] => comanysnametest 
      [iban] => DE02 520934 5 02384 
      [bic] => Genoht 034 
      [kontoinhaber] => the name here 
      [straße] => alphastr 
      [hausnummer] => 1337 
      [plz] => 46467 
      [ort] => Supp 
      [geschäftsführung] => another name 
      [vat] => 038u pwdf8a spdf 
     ) 

) 

EDIT:

Le UsersTable :: validationDefault:

public function validationDefault(Validator $validator) 
{ 
    $validator 
     ->add('id', 'valid', ['rule' => 'numeric']) 
     ->allowEmpty('id', 'create'); 

    $validator 
     ->add('email', 'valid', ['rule' => 'email']) 
     ->requirePresence('email', 'create') 
     ->notEmpty('email') 
     ->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); 

    $validator 
     ->requirePresence('password', 'create') 
     ->notEmpty('password'); 

    $validator 
     ->requirePresence('username', 'create') 
     ->notEmpty('username') 
     ->add('username', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); 

    $validator 
     ->allowEmpty('role'); 

    return $validator; 
} 

Le CompaniesTable :: validationDefault

public function validationDefault(Validator $validator) 
{ 
    $validator 
     ->add('id', 'valid', ['rule' => 'numeric']) 
     ->allowEmpty('id', 'create'); 

    $validator 
     ->requirePresence('name', 'create') 
     ->notEmpty('name') 
     ->add('name', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']); 

    $validator 
     ->requirePresence('modul', 'create') 
     ->notEmpty('modul'); 

    $validator 
     ->allowEmpty('iban'); 

    $validator 
     ->allowEmpty('bic'); 

    $validator 
     ->allowEmpty('kontoinhaber'); 

    $validator 
     ->requirePresence('straße', 'create') 
     ->notEmpty('straße'); 

    $validator 
     ->requirePresence('hausnummer', 'create') 
     ->notEmpty('hausnummer'); 

    $validator 
     ->add('plz', 'valid', ['rule' => 'numeric']) 
     ->requirePresence('plz', 'create') 
     ->notEmpty('plz'); 

    $validator 
     ->requirePresence('ort', 'create') 
     ->notEmpty('ort'); 

    $validator 
     ->requirePresence('geschäftsführung', 'create') 
     ->notEmpty('geschäftsführung'); 

    $validator 
     ->allowEmpty('vat'); 

    return $validator; 
} 
+0

Veuillez poster votre 'UsersTable :: validationDefault()'. Idem pour 'Company'. –

+0

Et déboguer la valeur de retour de $ this-> Users-> save() '... – ndm

+0

déboguer de $ this-> Users-> save() retourne juste faux – Ramses

Répondre

1

Utilisez cette debug ($ user-> erreurs()); pour voir si la validation a mal tourné. Cela affichera les erreurs de validation de tableau de chaque colonne le cas échéant.

+0

merci! il y a le champ "modul" qui ne devrait pas être représenté dans le formulaire. Il est maintenant défini sur une valeur par défaut. Donc tout fonctionne bien – Ramses