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
4 Réponses :
Essayez d'utiliser Illuminate \ Support \ Facades \ Auth; Auth :: getSession () -> getId ();
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>
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.
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); }); }