2009-12-21 5 views
2

J'ai un contrôleur nommé sales_controller à ce contrôleur, je suis une fonction dans wich je veux:CakePHP - Mise à jour des informations sur un utilisateur connecté

  1. informations de mise à jour au sujet de la vente -> DONE
  2. créer un nouveau enregistrement sur autre modèle -> FAIT
  3. mise à jour d'un champ sur un enregistrement de l'utilisateur -> PROBLÈME

Mon dernier a tenté de le faire était:

App::import('model','User'); 
$user= $this->Auth->user(); 
$nr = $this->Auth->user('nr') - 1 ; 

if($user->save(array('nr'=>$nr))) 
{ 
    $this->Session->setFlash(__('DONE! ', true)); 
    this->redirect(array('action'=>$page,$params)); 
} 

Je sais que la méthode $ this-> Auth> utilisateur() retourne un tableau et je lis que « sauver » ne fonctionne pas pour les tableaux ...

J'ai essayé d'appeler fonction de lecture sur utilisateurs, mais je ne sais toujours pas comment je devrais le faire.

Cela doit être quelque chose de simple à faire, mais je suis encore un débutant lol.

Alors, quelqu'un peut-il m'aider?

Merci

Répondre

2

Essayez ceci:

App::import('Model', 'User'); 
$user = new User(); 
$user->id = $this->Auth->user('id'); 

/* if you really need to store the entire array, instead of accessing individual fields as needed */ 
$user_info = $this->Auth->user(); 

/* in saveField, add 'true' as a third argument to force validation, i.e. $user->saveField('nr', $this->Auth->user('nr') - 1, true) */ 
if ($user->saveField('nr', $this->Auth->user('nr') - 1)) { 
    $this->Session->setFlash(__('DONE! ', true)); 
    this->redirect(array('action' => $page, $params)); 
} 
+0

C'est ça merci;) – Canastro

+0

Vous devriez utiliser '$ user = ClassRegistry :: init ('User');' à la place. – deizel

0

Vous avez chargé l'objet utilisateur, mais vous ne faites rien avec elle. Vous avez défini la valeur de $ user sur un tableau renvoyé par l'objet Auth, puis vous essayez d'appeler la méthode save. Vous voulez appeler save sur l'objet User.

Je pense que ce que vous essayez de dire est:

$this->User->id = $this->Auth->user('id'); 
$this->User->save(array('nr'=>$nr)); 
+0

j'ai fait ces modifications, mais au lieu de $ this-> Auth> utilisateur ('id') J'ai utilisé $ this-> Auth-> user(), car j'ai besoin de charger toutes les informations sur l'utilisateur. Mais je reçois toujours une page vierge et aucune modification sur les utilisateurs. La sortie de print_r ($ this-> User); est: Array ([Utilisateur] => Array ([id] => d12b1341-ee3e-11de-90ad-368a14c18e81 [connexion] => NoOne [adresse_messagerie] => [email protected] [group_id] => 4b2f7282-cc98- 4db0-8994-0cd49279ab65 [nr] => 2 [actif] => 1 [créé] => 2009-12-20 01:18:55 [modifié] => 2009-12-21 13:09:13)) – Canastro

Questions connexes