cakephp - problème Editer un profil

Par freeblitz, il y a 14 ans


Bonjour,

J'aimerais savoir comment modifier la valeur d'un champ selon le nom de l'utilisateur.

Voici mon code :

$user_name = $this->Auth->user('username');
if($this->request->is('post') || $this->request->is('put') )
  {
    $user = $this->Profil->find('first',array('conditions' => array('username' => $user_name)));
    if(!empty($user))
      {
       // Ici, c'est quand l'utilisateur existe deja et que qu'il souhaite modifier des champs.
       $this->Profil->username = $user_name;
       $this->request->data = array('username' => $user_name);
       $this->Session->setFlash("Le CV a bien été modifié","notif");
       $this->redirect(array('action'=>'view/'.$user_name));
     }else{
       $d = $this->request->data;
       $this->Profil->save($d,true,array('firstname','lastname'));
       $this->Profil->saveField('username',$user_name);
       $this->Session->setFlash("Le CV a été créé","notif");
     }
  }
elseif($id)
  {
    $this->Profil->id = $id; 
    $this->request->data = $this->Profil->read('firstname, lastname'); 
  }

Le probleme c'est qu'il crée une nouvelle ligne, au lieu de modifier celle qui existe déjà.

Comment je pourrais m'y prendre?

Merci!

4 réponses

Grafikart, il y a 14 ans

dans ce que tu envois dans le save() faut envoyer l'id de l'utilisateur

freeblitz, il y a 14 ans

ok, quand tu dis que je dois envoyer l'ID, C'est à dire l'id de "Auth"?

Car j'ai deux tables : user et profil.

et l'id de "Auth" n'est pas le même que son id dans la table profil.

Exemple :

2 Tables : User -> id:02 username:Bernard pwd:coco
Profil -> id:24 username:Bernard firstname:tata

Et j'aimerais modifier la table Profil selon son username.

Comment envoyer dans le save(), l'username?

Merci!

zenkiai, il y a 14 ans

salut, Pourquoi deux tables ?
Personnellement j'ai une table User dans laquel je met tous le profil de mon user dans cette même table.
je pense que ton soucis serait résolu si tu n'utilisais qu'une seule table. Pas besoin de liaison.
Ne crois tu pas ?