Die früheste Version, mit der ich mit Laravel gearbeitet habe, war 4.2 und ich bin immer noch ein großer Fan. Natürlich habe ich im Laufe der Jahre viel gelernt und bin auf viele Probleme und Schwierigkeiten gestoßen, aber ich freue mich immer noch darauf, welche Änderungen Laravel als nächstes vornehmen wird.
Eine der aufregenden Funktionen von Laravel ist die Ansichtserweiterungsfunktion. Meiner Meinung nach ermöglicht eine sehr leistungsstarke Ansichtserweiterung Entwicklern die genaue Übergabe von Variablen aus der globalen an die Vorlage.
Wie verwende ich die View-Erweiterung?
Zuerst müssen Sie die beiden verschiedenen Arten von Ansichtserweiterungen kennen, nämlich klassenbasiert und abschlussbasiert.
with('user', ['...']); }); // 或者 View::composer('profile', 'App\Http\ViewComposers\ProfileComposer');
Der Unterschied ist sehr offensichtlich, dass Verschlüsse einfach zu verwenden sind und keinen großen Aufwand für die Einrichtung erfordern, aber sie werden dazu führen, dass der Dienstanbieter zunehmend aufgebläht wird.
Andererseits führen Sie klassenbasierte Ansichtserweiterungen direkt zu isolierenden Designprinzipien. Ein weiterer Vorteil besteht darin, dass Sie diesen Codeabschnitt isoliert testen können und andere Entwickler den vorhandenen Code einfacher pflegen können.
In der Informatik ist Separation of Concerns (SoC) der Prozess der Zerlegung eines Computerprogramms in verschiedene Funktionen, die möglichst wenig funktionale Überschneidungen aufweisen. Ein Point of Concern ist jede interessante Stelle oder jeder Schwerpunkt im Programm . Fokus ist oft gleichbedeutend mit Funktionen oder Verhaltensweisen, und SoC-Fortschritte wurden traditionell mithilfe der Informationsversteckung durch Modularität und Kapselung erreicht.
Verstehen der Parameter der View::composer-Methode
In diesem Beispiel können Sie sehen, dass die View::composer-Methode zwei Parameter hat.
with('user', ['...']); }); // 或者 View::composer('profile', 'App\Http\ViewComposers\ProfileComposer');
Der erste Parameter ist der Name der Ansicht, die Sie überwachen möchten. Dies kann ein String oder ein Array sein. Das heißt, wenn diese Vorlagenansicht gerendert wird, wird Ihr Ansichtsmanager ausgelöst und die Variablen werden an die Ansicht übergeben.
Sie können auch Platzhalter verwenden, anstatt alle Vorlagen manuell auszuwählen. Sie können bequem das Sternchen (*) verwenden, um Daten an jede Ansicht anzuhängen, auch an komplexe Vorlagen mit vielen Unterverzeichnissen.
Nutzungsszenarien sind in der Regel Seitenleisten- oder Navigationselemente, die in jeder Ansicht angezeigt werden müssen.
Nach dem Login kopieren
Der zweite Parameter kann eine Abschlussfunktion oder der Klassenname des View Composers sein.
Beide Methoden erhalten einen $view-Parameter. Über diesen Parameter können Sie problemlos die Methode ->with() verwenden, um Variablen zur und aus der Ansicht hinzuzufügen.
with('breadcrumb', ['item 1', 'item ']); }); // 或者 View::composer('*', 'App\Http\ViewComposers\NavigationComposer'); // compose 方法也有 $view 参数 namespace App\Http\View\Composers; use Illuminate\View\View; class NavigationComposer { /** * @param View $view * @return void */ public function compose(View $view) { $view->with('navigation', [ 'items1', 'items2', 'item3' ]); } }
Den View-Compositor einrichten
Sie wissen wahrscheinlich, dass Laravel für viele Dinge Anbieter verwendet, also können Sie erraten, was als nächstes kommt? Ja, wir müssen einen Dienstanbieter registrieren und innerhalb des Anbieters den View Compositor verwenden, den wir gerade kennengelernt haben.
ViewComposerServiceProvider.php
Nach dem Login kopieren
Jetzt müssen Sie nur noch einen neuen Dienstanbieter in ~/config/app.php registrieren.
[ // .... /* * 应用的服务提供者... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\ViewComposerServiceProvider::class, // .... ], ];
Das war's, jetzt können wir den Ansichtscompositor testen
Den Ansichtseditor testen
Angenommen, wir haben eine Seite namens /detail, Diese Seite erfordert Navigationsdaten in Form eines Arrays (unten).
with('navigation', [ 'items1', 'items2', 'item3' ]); } }
Wir können unseren Ansichtseditor über die Methode ->assertViewHas() testen. Diese Methode kann erkennen, ob der Ansichtseditor die richtige Ansicht überwacht, und die Variable $navigation an sie übergeben.
get('/detail')->assertViewHas('navigation'); } }
Obwohl dieser Test einfach erscheint, können wir zumindest wissen, ob der Ansichtseditor funktioniert.
Fazit
Abschlussbasierte oder klassenbasierte Ansichtsmanager vereinfachen den Code und erleichtern Entwicklern die Verwendung. Es ist auch Teil von Laravel. Warum nutzen wir nicht einen so leistungsstarken Dienst?
Ich freue mich auf neue Funktionen in Laravel und hoffe, dass ich Ihnen etwas Neues zeigen kann.
Empfohlenes Tutorial: „Laravel Tutorial“
Das obige ist der detaillierte Inhalt vonLaravel View Compositor. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!