Laravel 5 - global Klinge view variable in allen templates verfügbar
Wie kann ich in Laravel 5 Globale variable, die in alle Blade-templates?
InformationsquelleAutor Limon Monte | 2015-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie kann ich in Laravel 5 Globale variable, die in alle Blade-templates?
InformationsquelleAutor Limon Monte | 2015-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Option 1:
Können Sie
view::share()
etwa so:Option 2:
Nutzen Komponist:
app\Composers\HomeComposer.php
NB: erstellen
app\Composers
wenn es nicht vorhanden istDann können Sie befestigt sich der Komponist zu einer beliebigen Ansicht dadurch
$user = Auth::user();
und übergeben die $user-variable für alle blade-Vorlagen, einschließlich der header und der content Teil? Ich versuchte dies, indem Sie die $user variable in der BaseController und dann teilen es, aber wenn ich var_dump $user bekomme ich eine Reihe von geschützten Werte in das array. Grundsätzlich möchte ich in der Lage sein, um Zugriff auf alle auth-user-Variablen während der app in alle Vorlagen und Ansichten. Scheint einfach, aber Stunden damit zugebracht haben, zu versuchen, es herauszufinden.Tatsächlich funktionierte dies:
<?= $user['name']; ?>
aber das hat nicht funktioniert:{{ $user->name }}
Priddle Diese Arbeit sollte für eine Reihe
{{ $user['name'] }}
das funktioniert zwar für ein Objekt{{ $user->name }}
Für option 1, den ich bekommen:
Class 'App\Http\Controllers\View' not found
InformationsquelleAutor Digitlimit
Erstellen Sie eine neue Service-Anbieter, wie vorgeschlagen, in hier
Fügen Sie Ihre neue Service-Provider-configuration-Datei (config/app.php).
In die boot-Methode des neuen Service-Provider verwenden:
Nun sind Sie bereit zu verwenden $something_cool in all Ihren Ansichten.
Hoffe, das hilft.
artisan down
. Injizieren einer app-version-string, der als cache-buster-parameter oder es erscheint in der Fußzeile, während die Aktualisierung ist eine lästige Pflicht, die mit anderen Lösungen. (mit einer env-variable für das wäre wahrscheinlich die sauberste Lösung wäre)dies ist eine bessere Lösung als die zugelassenen Antwort
Ich denke, der wesentliche Unterschied ist, dass der Benutzer gefragt, wie man ein "global" variable in allen templates. Mit der akzeptierten Lösung muss der Benutzer daran denken zu erweitern BaseController und Aufruf parent::construct und mit der ViewComposer Lösung, die er braucht, um View::Komponisten in jeder controller-Konstrukt Methode, um die verfügbaren Variablen.
Diese sollte gewählt werden, da eine Antwort!
InformationsquelleAutor Nic Gutierrez
Suche für die Lösung des gleichen Problems und fand die beste Lösung in der Laravel Dokumentation. Verwenden Sie einfach
View::share
imAppServiceProvider
wie diese:Details hier.
InformationsquelleAutor sha-1
Können Sie dies mit anzeigen Komponisten. Anzeigen Komponisten ausgeführt werden, wenn eine Vorlage geladen wird. Sie kann in einem Verschluss mit zusätzlicher Funktionalität für diese Ansicht. Mit Blick auf die Komponisten können Sie Platzhalter verwenden. Um eine view composer für jede Ansicht verwenden Sie einfach ein
*
.Können Sie auch dies tun, ohne einen Verschluss wie Sie sehen können, in den docs.
Profil composer-Klasse muss eine compose-Methode.
Anzeigen Komponisten ausgeführt werden, wenn eine view gerendert wird. Laravel hat auch die Ansicht Schöpfer. Diese werden ausgeführt, wenn ein view instanziiert wird.
Können Sie auch wählen, verwenden Sie eine
BaseController
mit einem stellelayoutein Methode. Dann ist jede Ansicht, die Sie wird geladen durch die stellelayoutein Methode, die fügt einige zusätzliche Daten. Wenn Sie jedoch einen Blick Komponisten-Sie sind ziemlich sicher, dass der code ausgeführt wird. Aber mit der BaseController Ansatz haben Sie mehr Flexibilität, denn Sie können überspringen Sie die Belastung der zusätzlichen Daten.EDIT: Wie erwähnt von Nic Gutierrez können Sie auch über Ansicht teilen.
view()->share
ist, dass dies nur ausgeführt wird, wenn ein view verwendet werden - aber mitview()->share
es lief egal was - Sie könnte wieder einige JSON in einen API-Aufruf zum Beispiel -, die nicht mit einem Blick.InformationsquelleAutor ArjanSchouten
Können, können Sie auch dies tun, in der
Route.php
Datei:InformationsquelleAutor Jodeveloper8
und Sie geben kann array nicht nur
View::share('key', 'value');
kann array wieView::share(['key'=>'value','key'=>'value'])
InformationsquelleAutor Ehab Elzeny
Können Sie hinzufügen, in
Controller.php
Datei:Dann:
InformationsquelleAutor Arshad Jilani
können Sie flash es in der Sitzung, die Sie definieren können, es in die .env-Datei (statische vars)
InformationsquelleAutor Jeff