Laravel 5 - global Lame de vue variable disponible dans tous les modèles
Comment puis-je Laravel 5 faire une variable globale qui sera disponible dans tous les Lame modèles?
Vous devez vous connecter pour publier un commentaire.
Comment puis-je Laravel 5 faire une variable globale qui sera disponible dans tous les Lame modèles?
Vous devez vous connecter pour publier un commentaire.
Option 1:
Vous pouvez utiliser
view::share()
comme suit:Option 2:
L'utilisation d'un compositeur:
app\Composers\HomeComposer.php
NB: créer
app\Composers
s'il n'existe pasVous pouvez ensuite attaché le compositeur à tout point de vue en faisant cela,
$user = Auth::user();
et passer le $variable utilisateur à l'ensemble de la lame de modèles, y compris l'en-tête et le contenu de la partie? J'ai essayé en mettant de l' $variable utilisateur dans le BaseController et le partage, mais si je var_dump $utilisateur je reçois un tas de valeurs protégées dans le tableau. Fondamentalement, je veux être en mesure d'accéder à l'ensemble de l'authentification de l'utilisateur variables tout au long de l'application dans tous les modèles et les vues. Semble simple, mais avoir passé des heures à essayer de le comprendre.<?= $user['name']; ?>
mais cela n'a pas fonctionné:{{ $user->name }}
{{ $user['name'] }}
alors que cela fonctionne pour un objet{{ $user->name }}
Class 'App\Http\Controllers\View' not found
Créer un nouveau Fournisseur de Services comme le suggère ici
Ajouter votre nouveau Fournisseur de Services pour le fichier de configuration (config/app.php).
Dans la méthode de démarrage de votre nouveau Fournisseur de Services d'utilisation:
Vous êtes maintenant prêt à utiliser $something_cool dans toutes vos vues.
Espère que cette aide.
artisan down
. l'Injection d'une application chaîne de version comme cache buster paramètre ou d'avoir à l'afficher dans le pied de page, tandis que la mise à jour est une corvée avec d'autres solutions. (l'utilisation d'une variable env pour ce serait sans doute la solution la plus propre quand même)La recherche de la solution du même problème et trouvé la meilleure solution dans Laravel de la documentation. Utilisez simplement
View::share
dansAppServiceProvider
comme ceci:Détails ici.
Vous pouvez faire cela avec vue compositeurs. Afficher les compositeurs sont exécutées lorsqu'un modèle est chargé. Vous pouvez passer une Fermeture avec des fonctionnalités supplémentaires de ce point de vue. Avec vue les compositeurs vous pouvez utiliser des caractères génériques. Pour faire une view composer pour chaque opinion, il suffit d'utiliser un
*
.Vous pouvez également le faire sans fermeture comme vous pouvez le voir dans les docs.
Le profil compositeur classe doit avoir un composer de la méthode.
Vue compositeurs sont exécutés lorsqu'une vue est rendue. Laravel a également afficher des créateurs. Ces activités sont exécutées lorsqu'une vue est instancié.
Vous pouvez également choisir d'utiliser un
BaseController
avec un setupLayout méthode. Ensuite, chaque point de vue qui vous permettra de charger est chargé par le setupLayout méthode qui ajoute quelques données supplémentaires. Cependant, en utilisant la vue des compositeurs que vous êtes à peu près sûr que le code est exécuté. Mais avec le BaseController approche que vous avez plus de souplesse car vous ne pouvez ignorer le chargement des données supplémentaires.EDIT: Comme mentionné par Nic Gutierrez vous pouvez également utiliser la vue de l'action.
view()->share
, c'est que ce n'est exécutée que lorsqu'une vue est utilisé - mais avecview()->share
il a couru n'importe quoi - vous peut-être de renvoyer du JSON dans un appel d'API par exemple - qui n'utilise pas de vue.Aussi, vous pouvez le faire dans le
Route.php
fichier:et vous pouvez donner la matrice de pas seulement
View::share('key', 'value');
pouvez mettre de tableau commeView::share(['key'=>'value','key'=>'value'])
Vous pouvez ajouter dans
Controller.php
fichier:Et puis:
vous pouvez le flash de la session, vous pouvez le définir dans la .fichier env (static var)