0
votes

Comment partager l'utilisateur authentifié sur toutes les vues de Laravel

J'ai un problème très étrange dans laravel 5.8 fort>. Je veux partager la variable utilisateur avec toutes les vues.

J'ai ajouté ceci à mon démarrage code> in appServiceProvider.php code>: p>

Uncaught ErrorException: Undefined variable: user in /home/forge/www.mywebsite.com/storage/framework/views/4b273b493839e5fb54c3f6a2d11d9446bee5de33.php:11


0 commentaires

4 Réponses :


1
votes

Vous pouvez accéder à l'utilisateur authentifié via l'assistant d'authentification de votre vue.

$ utilisateur = auth () -> utilisateur ();

https://laravel.com/docs/5.8/helpers#method-auth

mise à jour: afin de ne pas répéter ceci dans chaque vue, vous pouvez récupérer l'utilisateur à partir de la façade / assistant d'authentification dans vos fichiers de mise en page, de cette façon la variable sera disponible sous toutes les vues qui prolongent cette mise en page


4 commentaires

Merci d'avoir répondu. Il semble donc que la seule solution consiste à utiliser l'assistant auth-auth () ALPER ou la auth- façade et je ne peux pas partager la variable les vues. Est-ce correct?


C'est correct, mais vous pouvez utiliser directement la variable utilisateur sans utiliser la façade si vous le transmettez à la vue via la méthode du contrôleur.


Ouais, mais cela signifierait dupliquer 'utilisateur' => auth () -> utilisateur () dans chaque contrôleur. Je pensais qu'il y avait un moyen de centraliser la variable passant.


C'est correct. Sinon, vous pouvez récupérer l'utilisateur à partir de la façade / assistant d'authentification dans vos fichiers de mise en page, de cette façon la variable sera disponible sous toutes les vues qui prolongent cette mise en page.



1
votes

Utilisez simplement une méthode globale auth () code> dans votre lame pour obtenir des informations utilisateur authentifiées. XXX PRE>

ou P>

$user = auth('web')->user();


1 commentaires

@Luca Puddu a ajouté quelque chose, cela pourrait vous être utile pour vous - Checkout l'édition mise à jour.



0
votes

Tous sont de grandes réponses. Vous pouvez également utiliser la façade d'authentification pour accomplir cela. XXX

HTTPS: //laravel.com/docs/5.8/authentication


0 commentaires

1
votes

envisagez d'utiliser Afficher les compositeurs pour des variables partagées autour des vues xxx

DOCS


4 commentaires

Cela semble être la réponse la plus propre. Calling Affichage () -> Partager () directement à partir de la méthode DECORE AppserverServiceProvider Ne fonctionne pas car Auth :: Utilisateur ( ) retourne null quoi que ce soit.


Quelle est la différence de comportement avec la réponse précédente?


"Il semble que si vous appelez $ auth-> utilisateur () dans la méthode de démarrage () (à l'intérieur d'un fournisseur de services) et dd (), il retournera NULL. Mais si vous utilisez une fermeture, vous devez Dites 'usage ($ auth)' avant la fermeture si la variable que vous souhaitez utiliser n'est pas dans la portée. " LARACASTS. com / discussion / canaux / généralités-discussions / ...


Votre exemple précédent utilisait la façade auth-auth-auth qui devrait fonctionner aussi, sans injecter la garde. La clé est appelée auth () -> utilisateur () ou auth :: utilisateur () à l'intérieur du rappel d'un compositeur de vue. Le rappel est exécuté à une étape ultérieure, lorsque la vue est rendue et que l'utilisateur est ainsi disponible.