2009-10-20 13 views

risposta

0

Se si utilizza il controller, utilizzare il componente Sessione. È incluso, per impostazione predefinita, in tutti i controller. Ha i metodi Session :: read() e Session :: write(). Controlla http://book.cakephp.org/view/173/Sessions per ulteriori informazioni.

Credo che se il componente Sessione è come alcuni degli altri componenti, è possibile utilizzarlo all'interno delle viste. Prova a fare $ session-> read() nei blocchi del codice di visualizzazione. Se ciò non funziona, prova a fare $ this-> Session-> read (...). Come ultima risorsa, se nessuno di questi funziona, puoi sempre usare il buon vecchio PHP $ _SESSION, anche se è un po 'fuori dalla cornice di Cake. Tuttavia, se sei sicuro di non usare la gestione di Cake's Session (e non devi, IMO, dato che è poco più di un wrapper attorno a $ _SESSION), allora devi solo sapere quando applicare correttamente l'hack.

+2

la gestione delle sessioni Cake * è * più di un semplice wrapper '$ _SESSION', in quanto supporta diverse altre backend per la memorizzazione dei dati di sessione. Puoi scegliere di scrivere la sessione su un database per condividerla potenzialmente attraverso i server senza dover cambiare una singola istanza di '$ this-> Session-> write()' nella tua app. – deceze

+0

È vero, anche se penso che utilizzerei un metodo diverso all'interno di php per modificare gli altri gestori di sessione, piuttosto che inserirli in Cake.Immagino che mi hai colto pensando principalmente a come penso al componente, a come lo userei. –

+1

È già lì e funziona bene, perché non usarlo? :-) – deceze

12

C'è un SessionComponent disponibile nel controller che è possibile utilizzare come $this->Session->write('Name', 'Value');. Analogamente, c'è anche il SessionHelper per la vista, che fa cose molto simili e può essere usato come $session->read('Name');.

-2

È possibile passare l'oggetto Session da controller a un modello di vista utilizzando

$this->set('session',$this->Session); 

Poi, nel file di vista uso $session->read('SessionName');

-1

utente presente in voi di App Controller prima del filtro

$ this-> Session-> write ('Person.eyeColor', 'username'); $ green = $ this-> Session-> read ('Person.eyeColor'); $ this-> set ('username', $ green);

Questo vi darà risultato come si desidera

2

Per utilizzarlo in un aiutante si deve ricordare di includere nel vostro $ dichiarazione aiutanti:

class Foo extends AppHelper 
{ 
    var $helpers = array('Session','Bar'); 
5

È possibile utilizzare $this->Session->read('myParam') nei tuoi Visualizzazioni File.
Ma non è possibile utilizzare $this->Session->write('myParam').

Come osservato here:

La principale differenza tra il Helper sessione e la sessione componente è che l'assistente non ha la capacità di scrivere alla sessione .

Problemi correlati