Bonjour à tous!
J'ai un soucis qui consiste au fait que le profile professionel de mon utilisateur s'enregistre plusieurs fois au lieu de s'éditer et de se modifier:
Mes Models:
<?php
// User model named by User.php
App::uses('AppModel', 'Model');
class User extends AppModel{
public $name = 'User';
public $hasOne = array(
'Professional' => array(
'className' => 'Professional',
'foreignKey' => 'user_id',
'dependent' => true
)
);
public $validate = array(
'username' => array(
'alpha' => array(
'rule' => '/^[a-zA-Zéèàêù._-\s\']{1,}$/i',
'message' => 'Votre nom d\'utilisateur n\'est pas valide'
),
'uniq' => array(
'rule' => 'isUnique',
'message' => "Ce pseudo est déjà utilisé"
)
)
);
}
<?php
// Professional model named by Professional.php
class Professional extends AppModel {
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
}
Mon controller UsersController
public function account_essai2(){
if($this->request->is('post') && !empty($this->request->data)){
$this->request->data'User']'id'] = $this->Auth->user('id');
if($this->User->validates()){
$user = $this->User->save($this->request->data, array('User.firstname', 'User.lastname', 'User.telephone', 'User.civilities', 'User.mail', 'User.adresse_1', 'User.adresse_2', 'User.zip_code', 'User.city', 'User.region', 'User.department', 'User.lat', 'User.lng' ));
if (!empty($user)) {
$this->request->data'Professional']'user_id'] = $this->User->id;
$this->request->data'Professional']'id'] = $id;
if(isset($profile)){
$this->request->data'Professional']'id'] = $professional'Professional']'id'];
}
$this->request->data'Professional']'user_id'] = $this->Auth->user('id');
if($this->Professional->save($this->request->data)){
return $this->redirect(array('controller' => 'Users', 'action' => 'account_essai2'));
}
}else if($id){
$this->request->data = $professional;
}
$user = $this->User->read();
$this->Auth->login($user'User']);
$this->Session->setFlash("Vos informations ont bien été modifiées","flash", array('class' => 'success'));
}
}else{
$this->User->id = $this->Auth->user('id');
$this->request->data = $this->User->read();
}
}
Et ma vue account_essai2:
Les inputs user puis:
<?= $this->Form->input('Professional.id', array('type' => 'hidden')); ?>
<?= $this->Form->input('Professional.name'); ?>
<?= $this->Form->input('Professional.manager'); ?>
<?= $this->Form->input('Professional.registration'); ?>
Tout ça s'enregistre sur une nouvelle ligne dans ma base de données au lieu de se modifier et cela n'est pas renvoyé sur mon account_essai2.ctp. Où est l'erreur.
Merci d'avance de me donner un coup de main.