Formation PUB030 : Laravel, 2019 Les variables de session

34.1 Variables de session dans Laravel avec façade ou fonction d'aide


Comme avec tout langage de programmation Web côté serveur, il est possible d'utiliser des variables de session sous Laravel.

Plusieurs techniques s'offrent à vous :

  • la fonction d'aide (helper function) session() (toujours disponible)
  • la façade Session (vous devrez faire un use Session;)
  • la méthode $request->session() (vous devrez injecter l'objet $request dans la méthode d'action).

Alors que les deux premières sont toujours disponibles, la troisième ne pourra être utilisée que lorsqu'un paramètre recevra une référence à la requête HTTP (ex : Request $request).

Et pour utiliser la façade, vous pouvez soit la précéder d'une barre oblique inverse (\Session::put(...)) ou encore ajouter use Session; en haut de la page.

Voici, pour chacune des trois techniques, la syntaxe pour effectuer les tâches courantes avec les variables de session.

Créer une variable de session

Fonction d'aide session() :

Contrôleur Laravel (PHP)

session(['cle' => 'valeur']);

Façade Session :

Contrôleur Laravel (PHP)

Session::put('cle', 'valeur');

Requête HTTP :

Contrôleur Laravel (PHP)

$request->session()->put('cle', 'valeur');

Lire une variable de session

Fonction d'aide session() :

Contrôleur Laravel (PHP)

$valeur = session('cle');

Façade Session :

Contrôleur Laravel (PHP)

$valeur = Session::get('cle');

Requête HTTP :

Contrôleur Laravel (PHP)

$valeur = $request->session()->get('cle');

Vérifier l'existence d'une variable de session

Fonction d'aide session() :

Contrôleur Laravel (PHP)

if (session()->has('cle')) {

    ...

}

Façade Session :

Contrôleur Laravel (PHP)

if (Session::has('cle')) {

    ...

}

Requête HTTP :

Contrôleur Laravel (PHP)

if ($request->session()->has('cle')) {

    ...

}

Consulter la liste des variables de session (pour fins de débogage)

Fonction d'aide session() :

Contrôleur Laravel (PHP)

\Log::debug(session()->all());

Façade Session :

Contrôleur Laravel (PHP)

\Log::debug(Session::all());

Requête HTTP :

Contrôleur Laravel (PHP)

\Log::debug($request->session()->all());

Supprimer une variable de session

Fonction d'aide session() :

Contrôleur Laravel (PHP)

session(['cle' => null]);

Notez que ceci ne donne pas le même résultat qu'avec les deux autres techniques car la variable sera toujours visible avec session()->all() mais elle aura la valeur null. L'utilisation de if (session()->has('cle')) retournera false, comme souhaité.

Façade Session :

Contrôleur Laravel (PHP)

Session::forget('cle');

Requête HTTP :

Contrôleur Laravel (PHP)

$request->session()->forget('cle');

Pour plus d'information

« Session ». Laravel. https://laravel.com/docs/master/session

« Configuration et session ». OpenClassrooms. https://openclassrooms.com/courses/decouvrez-le-framework-php-laravel/l-injection-de-dependance

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre