3
votes

\ Request :: getSession () renvoie NULL dans la construction Controller

Je veux obtenir l'identifiant de session de l'utilisateur à chaque fois qu'une page est chargée, j'utilise donc \ Request :: getSession () -> getId () dans la construction du contrôleur mais j'obtiens cette erreur

Call to a member function getId() on null


0 commentaires

4 Réponses :


0
votes

Essayez d'utiliser Illuminate \ Support \ Facades \ Auth; Auth :: getSession () -> getId ();


0 commentaires

0
votes

Il s'agit de la fonctionnalité par défaut de Laravel. Les données de session ne sont plus disponibles dans le constructeur. Voir:

laravel - Impossible d'obtenir la session dans le constructeur du contrôleur < / p>


0 commentaires

0
votes

Le mot de Taylor à ce sujet:

Il est très mauvais d'utiliser session ou auth dans votre constructeur car aucune requête ne s'est encore produite et session et auth sont INHERENTEMENT liées à une requête HTTP. Vous devriez recevoir cette demande dans une méthode de contrôleur réelle que vous pouvez appeler plusieurs fois avec plusieurs demandes différentes. En forçant votre contrôleur à résoudre les informations de session ou d'authentification dans le constructeur, vous forcez maintenant l'ensemble de votre contrôleur à ignorer la requête entrante réelle, ce qui peut causer des problèmes importants lors des tests, etc.


0 commentaires

0
votes

Cela a fonctionné pour moi:

public function __construct()
{
    // No session access from constructor work around
    $this->middleware(function ($request, $next) {
        \Request::getSession()->getId();
        return $next($request);
    });
}


0 commentaires