2010-01-27 31 views
2

Je veux obtenir mes variables de session dans mon modèle. Je n'utilise pas le composant Auth. Y a-t-il un autre moyen?Cakephp obtenant la variable de session dans le modèle sans utiliser le composant Auth

Merci Binoy

+1

Sessions et le A uthComponent ont peu à faire l'un avec l'autre. Essayer d'accéder aux variables de session à partir du modèle ressemble à une mauvaise séparation MVC. Qu'est-ce que vous essayez de faire? – deceze

+0

Ok .. Je vais vous expliquer .. J'ai besoin de faire une sauvegarde (comme un journal) de l'enregistrement en cours avant la mise à jour avec de nouvelles données. Donc, je suis en train d'écrire le code dans beforeSave dans le modèle et j'ai besoin de savoir qui met à jour l'enregistrement qui sera là en session. – binoy

+2

Vérifiez les comportements de révision et logable d'alkemann. http://github.com/alkemann/CakePHP-Asset – neilcrookes

Répondre

6

Vous devez utiliser l'assistant de session pour faire,

$this->Session->write('key','value'); 

Mais comme les états de commentaires, vous serez désireux de définir une variable dans votre modèle, puis utilisez la session pour écrire la même valeur dans cette variable dans le modèle, plutôt que d'accéder à la session réellement dans le modèle.

Class MyModel Extends AppModel{ 
    var $username; 
    var $password; 
} 

Ensuite, dans votre contrôleur, vous pouvez utiliser quelque chose le long des lignes de,

$this->MyModel->username = $this->Session->read('User.id'); 
$this->MyModel->password = $this->Session->read('User.password'); 
0

Controller fichier: utilisation Session aide

class AppController extends Controller { 
    var $helpers = array('Session'); 
    function index() 
    { 
     $this->Session->write('answer', '10'); //$this->Session->write('key','value'); 
    } 
    .... 
} 

Maintenant, vous pouvez accéder à cette varibale dans votre modèle:

class AppModel extends Model { 

    function validateanswer(){ 
     CakeSession::read('answer');/*Here u can get value of varibale answer which you set through controller*/ 
    } 
} 
Questions connexes