Heim> PHP-Framework> Laravel> Hauptteil

Laravel View Compositor

Guanhui
Freigeben: 2020-06-12 18:01:41
nach vorne
2824 Leute haben es durchsucht

Laravel View Compositor

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');
Nach dem Login kopieren
Nach dem Login kopieren

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');
Nach dem Login kopieren
Nach dem Login kopieren

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' ]); } }
Nach dem Login kopieren

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, // .... ], ];
Nach dem Login kopieren

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' ]); } }
Nach dem Login kopieren

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'); } }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!