Come posso creare, scrivere e leggere i dati della sessione in CakePHP?
-
11-09-2019 - |
Domanda
qualcuno può darmi un esempio su come creare sessioni e scrivervi dati.Ho visto la sintassi su come scrivere i dati in una sessione utilizzando il comando write.Ma come creare una sessione e recuperare i valori in essa contenuti.
Nella mia applicazione ho due dati, form_id e user_id che devono essere utilizzati in tutte le richieste di pagina.Quindi, come posso salvarlo come variabile di sessione e utilizzarlo nell'applicazione?
MODIFICARE
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);
}
Come utilizzare la variabile di sessione 'Utente.IDUtente' invece di $userId in $this->Flash('Account utente creato','/forms/homepage/'.$IDutente);
E posso usare questa variabile in tutti i miei file di visualizzazione, perché in tutte le richieste di pagina passo anche l'userId?
MODIFICA 2
Ho 2 controller, utente e modulo.Scrivo l'ID utente in una variabile di sessione nel file users_controllore.Ho un file di visualizzazione chiamato homepage.ctp, la cui azione è nel form_controller. Ora come posso utilizzare la variabile di sessione definita in users_controller nella home page?Scusate se faccio domande stupide.Ho sfogliato l'album delle torte, ma i miei dubbi non sono stati chiariti.Sto anche provando un metodo di codifica per tentativi ed errori, quindi per favore aiutami.
MODIFICA 3
Ho una variabile di sessione "uid" che è l'ID utente nell'azione della home page di un controller.
$this->Session->write('uid',$this->data['Form']['created_by']);
Ho bisogno della stessa variabile nel metodo di azione di progettazione dello stesso controller.Quando do
$uid=$this->Session->read('uid');
echo "uid: ".$uid;
il valore non viene ripetuto.
Non posso utilizzare la variabile di sessione nello stesso controller?
Soluzione 5
ho scoperto il motivo per cui l'uid non veniva fatto eco (Edit 3 parte della domanda). E 'a causa di uno stupido errore, ha avuto uno spazio bianco dopo il tag di chiusura?> Nel controller. Ora si sta lavorando bene.
Altri suggerimenti
Il panificio è il tuo migliore amico:
http://book.cakephp.org/view/398/Methods
Tutta la vostra sessione di lettura / scrittura appartengono nel controller:
$this->Session->write('Person.eyeColor', 'Green');
echo $this->Session->read('Person.eyeColor'); // Green
In PHP torta puoi creare sessione come questo
$this->request->session()->write('user_id', 10);
ed è possibile valore di sessione leggere in questo modo
echo $this->request->session()->read('user_id');
Super Semplice!
Non è necessario scrivere alcun codice per creare la sessione, sono già integrati.Quindi usi semplicemente le sessioni di lettura e scrittura come menzionato sopra.Vedi anche qui per maggiori dettagli:
http://book.cakephp.org/2.0/en/core-libraries/components/sessions.htmlUtilizzato nei controller
http://book.cakephp.org/2.0/en/core-libraries/helpers/session.htmlUtilizzato nelle visualizzazioni
In questo caso sarebbe:
$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));
e la tua seconda domanda è anwered da Jason Miy ( http://api.cakephp.org / classe / session-helper). Si può semplicemente utilizzare questo a vostro parere:
$userId = $session->read('User.UserId');
La lettura delle pagine di libro di cucina appropriati lentamente e con attenzione di solito aiuta molto ...
quando ho strano comportamento della sessione, e questo mi aiuta.
MODELLO:
function clearAllDBCache() {
$db =& ConnectionManager::getDataSource($this->useDbConfig);
$db->_queryCache = array();
}
`
Acess tuo Helper SessionHelper in lib/Cake/View/Helper/SessionHelper.php
e aggiungere il metodo:
public function write($name = null) {
return CakeSession::write($name);
}