2009-07-07 4 views
8

quelqu'un peut-il me donner un exemple sur la façon de créer des sessions et y écrire des données. J'ai vu la syntaxe sur la façon d'écrire des données à une session en utilisant la commande d'écriture. Mais comment créer une session et récupérer les valeurs dedans.Comment créer, écrire et lire des données de session dans CakePHP?

Dans mon application, j'ai deux données, form_id et user_id qui doivent être utilisées dans toutes les demandes de page. Alors, comment puis-je l'enregistrer en tant que variable de session et l'utiliser dans l'application?

EDIT

function register() 
{ 
    $userId=$this->User->registerUser($this->data); 
    $this->Session->write('User.UserId',$userId); 
    //echo "session".$this->Session->read('User.UserId'); 
    $this->User->data=$this->data; 
    if (!$this->User->validates()) 
    { 
    $this->Flash('Please enter valid inputs','/forms'); 
     return; 
    } 

$this->Flash('User account created','/forms/homepage/'.$userId);    

} 

Comment utiliser la variable de session 'User.UserId' au lieu de userId $ en $ this-> Flash ('compte utilisateur créé', '/ formes/page d'accueil/$ userId); Puis-je utiliser cette variable dans tous mes fichiers de vue, parce que dans toutes les demandes de page, je passe également l'ID utilisateur?

EDIT 2

I have 2 contrôleurs, l'utilisateur et la forme. J'écris l'ID utilisateur à une variable de session dans les utilisateurs _controller. J'ai un fichier de vue appelé homepage.ctp, dont l'action est dans le forms_controller. Maintenant, comment puis-je utiliser la variable de session définie dans users_controller dans la page d'accueil? Désolé si je pose des questions stupides. Je suis allé à travers le livre de gâteau, mais mes doutes n'ont pas été effacés. J'essaie aussi la méthode de codage par essais et erreurs, alors aidez-moi s'il vous plaît.

EDIT 3

J'ai une variable de session 'uid' qui est l'identifiant de l'utilisateur dans l'action de la page d'accueil d'un contrôleur.

 $this->Session->write('uid',$this->data['Form']['created_by']); 

J'ai besoin de la même variable dans la méthode d'action de conception du même automate. Quand je donne

   $uid=$this->Session->read('uid'); 
      echo "uid: ".$uid; 

la valeur est repris. Est-ce que je ne peux pas utiliser la variable de session dans le même contrôleur?

Répondre

0

Je trouve la raison pour laquelle l'uid n'était pas écho (modifier 3 partie de la question). Cela est dû à une erreur stupide, avait un espace blanc après l'étiquette de fin?> Dans le contrôleur. Maintenant ça fonctionne bien.

7

La boulangerie est votre meilleur ami:

http://book.cakephp.org/view/398/Methods

Toutes vos lecture de la session/écriture appartiennent dans le contrôleur:

$this->Session->write('Person.eyeColor', 'Green'); 

echo $this->Session->read('Person.eyeColor'); // Green 
+0

code court et doux et de travail pour toutes les versions :) –

0

Dans ce cas, il serait:

$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId')); 

et votre deuxième question est anwered par Jason Miy (http://api.cakephp.org/class/session-helper). Vous pouvez simplement utiliser dans votre vue:

$userId = $session->read('User.UserId'); 

La lecture des pages de livres de cuisine appropriées lentement et avec précaution aide généralement beaucoup ...

+0

J'ai 2 contrôleurs, utilisateur et formulaire. J'écris l'userid à une variable de session dans le users_controller. J'ai un fichier de vue appelé homepage.ctp, dont l'action est dans le forms_controller. Maintenant, comment puis-je utiliser la variable de session définie dans users_controller dans la page d'accueil? Désolé si je pose des questions stupides. Je suis allé à travers le livre de gâteau, mais mes doutes n'ont pas été effacés. J'essaie aussi la méthode de codage par essais et erreurs, alors aidez-moi s'il vous plaît. – Angeline

+0

Comme je l'ai mentionné, vous pouvez utiliser le SessionHelper dans vos vues. Voir http://book.cakephp.org/view/484/Session et http://book.cakephp.org/view/567/Methods –

0

lorsque j'ai un comportement de session étrange, et cela m'aide.

Modèle:

function clearAllDBCache() { 
    $db =& ConnectionManager::getDataSource($this->useDbConfig); 
    $db->_queryCache = array(); 
    } 

`

0

Acess votre Helper SessionHelper dans lib/Cake/View/Helper/SessionHelper.php et ajouter la méthode:

public function write($name = null) { 
    return CakeSession::write($name); 
} 
Questions connexes