Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestione delle sessioni

Come utilizzare e gestire le sessioni con il framework PHP Symfony per memorizzare informazioni relative all'utente durante la sua navigazione
Come utilizzare e gestire le sessioni con il framework PHP Symfony per memorizzare informazioni relative all'utente durante la sua navigazione
Link copiato negli appunti

Quando abbiamo la necessità di memorizzare informazioni relative all'utente durante la sua navigazione possiamo utilizzare le sessioni. Symfony ci consente di utilizzarle attraverso il componente HttpFoundation che è sempre presente in ogni installazione del framework PHP.

Per utilizzarle dobbiamo innanzitutto abilitarle nel file di configurazione che si trova sul percorso app/config/packages/framework.yaml:

framework:
    session:
        enabled: true

Abilitandole, senza modificare le altre impostazioni, Symfony utilizzerà il meccanismo di default PHP e non avremo modo di accedere alla directory in cui vengono salvate le sessioni. In base alle necessità, però, possiamo anche decidere di far gestire a Symfony le sessioni e scegliere la strategia (Database, Redis, File System..).

Utilizzo delle Sessioni

Per utilizzare la sessione dell’utente abbiamo bisogno di iniettare il servizio Symfony\Component\HttpFoundation\RequestStack nel nostro servizio e/o nel controller in cui vogliamo utilizzarle.

Gli attributi della sessione sono gestiti con l’AttributeBag e quindi abbiamo a disposizione dei metodi per scrivere, leggere, svuotarne il contenuto ecc.

Supponiamo di avere la necessità di memorizzare la data in cui è stato effettuato l’ultimo accesso ad una pagina (ad esempio per verificare se i contenuti della pagina sono cambiati nel frattempo e quindi modificare la Response in base all’informazione) possiamo usare il seguente codice:

public function index(RequestStack $requestStack): Response
{
    $session = $requestStack->getCurrentRequest()->getSession();
    $session->set('last_page_visited_at', new \DateTime());
    dump($session->get('last_page_visited_at'));  
    return $this->render('home/index.html.twig');
}

Il metodo set() prende in ingresso due parametri: il nome dell’attributo ed il suo valore.

Abbiamo visto dall’esempio precedente che possiamo memorizzare qualsiasi cosa all’interno della sessione, non solo valori scalari. Nel nostro caso in effetti abbiamo memorizzato un oggetto di tipo DateTime.

Il metodo get(), invece, ci permette di recuperare un attributo attraverso il suo nome. La get() in alto, infatti, recupera il dato appena salvato e lo mostra a schermo (nel pannello di debug nel nostro caso, come rappresentato in Figura 1.

Valore salvato in sessione

Figura 1. Valore salvato in sessione

Ti consigliamo anche