Laravel: Unterschied zwischen View::Anteil() und View::Komponist()
In Bezug auf die Frage Vorbei an Standard-Variablen anzeigen, zur übergabe von Variablen verfügbar unter alle Ansichten, gibt es eine technische oder funktionale Unterschied zwischen der Verwendung von View::composer()
:
View::composer('*', function($view) {
$thundercats = 'Woooooohh!!';
$view->with('thundercats', $thundercats);
})
in der filters.php - Datei oder die Verwendung von View::share()
im BaseController.php Datei:
public function __construct {
$thundercats = 'Woooooohh!!';
View::share('thundercats', $thundercats);
}
Habe ich erst vor kurzem gelernt, über View::share()
und finde es außergewöhnlich faszinierendes zwar hab ich schon begonnen, mit den ehemaligen in einem anderen Projekt.
Edit:
Meine erste Annahme ist, dass die ehemaligen ist eine Datei (filters.php), während die letztere ist eine Klasse (BaseController.php). Mit diesem im Verstand, ich bin zu raten, eine Klasse ist besser? Obwohl, ich bin mir nicht ganz sicher, warum an dieser Stelle. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Technisch sind Sie nicht alle gleich sind.
View::share
setzt einfach eine variable, währendView::composer
ist eine callback-Funktion.Lassen Sie mich näher erläutern:
Ansicht::share
ist wirklich straight forward, setzt es eine variable, die verwendet werden können, in den Blick, es ist wie eine Globale variable.Ansicht::Komponist
registriert ein Ereignis, das aufgerufen wird, wenn die view gerendert wird, nicht zu verwechseln mit einemAnsicht::creator
das ausgelöst wird, wenn eine view instanziiert wird.View::composer
/View::creator
können beide verwendet werden, als eine Klasse, die gut dokumentiert.Während diese geben Ihnen die Möglichkeit, pass-zusätzliche Daten in eine Sicht, Sie geben auch der Fähigkeit zu tun, eine Menge anderer Dinge, zum Beispiel könnten Sie:
Diese sind nur einige Beispiele, was könnte möglich sein
View::composer
undView::creator
.View::share()
. Für etwas anderes/mehr als das, verwenden SieView::composer()
.View::composer
.Bedeutet, dass die callback-wird aufgerufen, alle Ansichten (*).
Bedeutet, dass eine variable wird gemeinsam mit allen Ansichten ausgegeben wird.
Weil Sie die erste ist, die in filters.php es werde gelten für alle Routen.
Die zweite ist in einem controller contructor, so werde es gelten für alle Ansichten ausgelöst durch diesen controller.
Eine Letzte Sache: wenn Sie einen Konstruktor überschreiben, ist es eine gute übung, um immer aufrufen des übergeordneten Konstruktors mit diesem code:
Views::composer
Variablen zugegriffen werden kann, auch in routes.php und jede andere Datei? Aus Neugier, kann das getan werden, um eine spezifische variable für alle Controller andere als$this->varname
?