Variabili di Sessione
Symfony facilita il salvataggio nelle varibili di sessione php tramite l’utilizzo della classe – sfUser –
in particolare:
// Per sfActions $this->getUser()->setAttribute('nomevariabile', valore) $this->getUser()->getAttribute('nomevariabile',se la variabile non esiste) $this->getUser()->getAttributeHolder()->remove('nomevariabile'); $this->getUser()->getAttributeHolder()->clear(); // dal Template $sf_user->getAttribute('nomevariabile')
Un esempio pratico:
actions.class.php
<?php class contenutoActions extends sfActions // estende la classe Symfony { public function executeFirstpage($request)// http://localhost/jobeet/web/frontend_dev.php/contenuto/firstpage { $nickname = 'Andrea'; // 1. Salva nella sessione la variabile nickname con il valore Andrea // getUser()->setAttribute è un metodo della classe Symfony sfUser $this->getUser()->setAttribute('nickname', $nickname); return $this->renderText('Salvata la variabile di sessione nickname= '. $nickname); } public function executeSecondpage() // http://localhost/jobeet/web/frontend_dev.php/contenuto/secondpage { // 2. Carica la variabile di sessione nickname // getUser()->getAttribute è un metodo della classe Symfony sfUser // variabile, se la variabile non esiste $nickname = $this->getUser()->getAttribute('nickname', 'Visitatore Anonimo'); return $this->renderText($nickname); // render della variabile o di 'Visitatore Anonimo' } public function executeThirdpage() // http://localhost/jobeet/web/frontend_dev.php/contenuto/thirdpage { // richiama il template che carica direttamente dal suo interno la variabile di sessione } public function executeRemovenickname() // http://localhost/jobeet/web/frontend_dev.php/contenuto/removenickname { // getUser()->getAttributeHolder() è il contenitore di tutti i parametri // rimuove solo la variabile nickname $this->getUser()->getAttributeHolder()->remove('nickname'); return $this->renderText('Rimosso nickname'); } public function executeCleanup() // http://localhost/jobeet/web/frontend_dev.php/contenuto/cleanup // rimuove tutte le variabili di sessione $this->getUser()->getAttributeHolder()->clear(); return $this->renderText('Rimosse tutte le variabili di sessione'); } }// END class
thirdpageSuccess.php
Hello, <?php echo $sf_user->getAttribute('nickname') ?>
Variabili di Sessione Flash
Symfony memorizza in sessione anche dei dati che definisce flash.
Le variabili flash vengono automaticamente cancellate dopo essere state caricate, non è necessario eliminarle esplicitamente dalla sessione.
actions.class.php
<?php class contenutoActions extends sfActions // estende la classe Symfony { public function executeThirdpage() // http://localhost/jobeet/web/frontend_dev.php/contenuto/thirdpage { $value = 'Questa è una nota Flash'; $this->getUser()->setFlash('notice', $value); } }// END class
thirdpageSuccess.php
<?php echo $sf_user->getFlash('notice') ?>
Ref: http://symfony.com/legacy/doc/gentle-introduction/1_4/it/06-Inside-the-Controller-Layer