Donc, j'obtiens généralement l'utilisateur actuel en utilisant Auth::user()
et quand je détermine si un utilisateur est réellement connecté Auth::check
. Cependant, cela ne semble pas fonctionner dans mon AppServiceProvider
. Je l'utilise pour partager des données sur toutes les vues. Je var_dump
Auth::user()
et Auth::check()
lorsque je suis connecté et j'obtiens NULL
et false
.
Comment puis-je obtenir l'utilisateur actuel dans mon AppServiceProvider
? Si cela n'est pas possible, comment obtenir des données uniques pour chaque utilisateur (données différentes selon le user_id
) Dans toutes les vues. Voici mon code de clarification.
if (Auth::check()) {
$cart = Cart::where('user_id', Auth::user()->id);
if ($cart) {
view()->share('cart', $cart);
}
} else {
view()->share('cartItems', Session::get('items'));
}
La session Laravel est initialisée dans un middleware afin que vous ne puissiez pas accéder à la session à partir d'un fournisseur de services, car ils exécutent avant le middleware dans le cycle de vie de la demande
Vous devez utiliser un middleware pour partager vos variables de la session
Si, pour une autre raison, vous souhaitez le faire dans un fournisseur de services, vous pouvez utiliser un afficher le compositeur avec un rappel, comme ceci:
public function boot()
{
//compose all the views....
view()->composer('*', function ($view)
{
$cart = Cart::where('user_id', Auth::user()->id);
//...with this variable
$view->with('cart', $cart );
});
}
Le rappel ne sera exécuté que lorsque la vue est en cours de composition, donc les middlewares seront déjà exécutés et la session sera disponible
Dans la fonction boot()
de AuthServiceProvider
, écrivez ces lignes de code
public function boot()
{
view()->composer('*', function($view)
{
if (Auth::check()) {
$view->with('currentUser', Auth::user());
}else {
$view->with('currentUser', null);
}
});
}
Ici *
signifie - dans toutes vos vues $currentUser
variable est disponible.
Ensuite, à partir du fichier de vue {{ currentUser }}
vous fournira les informations utilisateur si l'utilisateur est authentifié sinon null.