Sicht
Ansichten erstellen
{tip} Möchten Sie mehr darüber erfahren, wie man Blade-Vorlagen schreibt? Sehen Sie sich zunächst die vollständige Blade-Dokumentation an.
Die Ansicht enthält den HTML-Code der Anwendung und trennt die Controller-/Anwendungslogik von der Präsentationslogik. Ansichtsdateien werden im Verzeichnis resources/views
gespeichert. Eine einfache Ansicht sieht so aus:
<!-- 此视图文件位置 resources/views/greeting.blade.php --> <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html>
Die Ansichtsdatei befindet sich unter resources/views/greeting.blade.php
und kann mit der globalen Hilfsfunktion view
zurückgegeben werden:
Route::get('/', function () { return view('greeting', ['name' => 'James']); });
Wie Sie sehen können, übergeben an view
Der erste Parameter des Helfers entspricht dem Namen der Ansichtsdatei im Verzeichnis resources/views
. Der zweite Parameter ist ein Datenarray, das für die Ansicht verfügbar sein soll. In diesem Fall übergeben wir die Variable name
, die mithilfe der Blade-Syntax in der Ansicht angezeigt wird.
Ansichtsdateien können natürlich auch in Unterverzeichnissen des Verzeichnisses resources/views
verschachtelt werden. Die „Punkt“-Notation kann verwendet werden, um auf verschachtelte Ansichten zu verweisen. Wenn Ihre Ansicht beispielsweise in resources/views/admin/profile.blade.php
gespeichert ist, können Sie sie wie folgt referenzieren:
return view('admin.profile', $data);
Bestimmen Sie, ob die Ansichtsdatei vorhanden ist
Wenn Sie dies feststellen müssen ob die Ansichtsdatei vorhanden ist. Sie können die View
-Fassade verwenden. Wenn die Ansichtsdatei vorhanden ist, gibt die exists
-Methode true
zurück :
use Illuminate\Support\Facades\View;if (View::exists('emails.customer')) { // }
Erstellen Sie die erste verfügbare Ansicht
Mit der Methode first
können Sie die erste Ansicht erstellen, die in einer bestimmten Array-Ansicht vorhanden ist. Dies ist nützlich, wenn Ihre Anwendung oder das von Ihnen entwickelte Drittanbieterpaket das Anpassen oder Überschreiben von Ansichten zulässt:
return view()->first(['custom.admin', 'admin'], $data);
Natürlich können Sie auch die View
-Fassade passieren Rufen Sie diese Methode auf:
use Illuminate\Support\Facades\View;return View::first(['custom.admin', 'admin'], $data);
Übergeben Sie Parameter an die Ansicht
Wie zuvor Wie im Beispiel oben zu sehen ist, können Sie einen Datensatz an die Ansicht übergeben:
return view('greetings', ['name' => 'Victoria']);
Wenn Sie Informationen auf diese Weise übergeben, sollten die Daten mit dem Schlüssel vorliegen / Array von Wertepaaren. In der Ansicht können Sie auf jeden Wert über den entsprechenden Schlüssel zugreifen, z. B. <?php echo $key; ?>
. Alternativ zur Übergabe des gesamten Datenarrays an die view
-Hilfsfunktion können Sie with
verwenden Methoden fügen der Ansicht einzelne Datenelemente hinzu:
return view('greeting')->with('name', 'Victoria');
Daten mit allen Ansichten teilen
Bei Bedarf Teilen Sie ein Stück Um Daten für alle Ansichten der Anwendung bereitzustellen, können Sie die Ansicht Facade in der boot
-Methode des Dienstanbieters aufrufen share
Methode. Sie können sie beispielsweise zu AppServiceProvider
hinzufügen oder einen separaten Dienstleister für sie generieren:
<?php namespace App\Providers; use Illuminate\Support\Facades\View; class AppServiceProvider extends ServiceProvider{ /** * Bootstrap any application services. * * @return void */ public function boot() { View::share('key', 'value'); } /** * Register the service provider. * * @return void */ public function register() { // } }
View Composer
View Composer ist ein Rückruf oder eine Klassenmethode, die aufgerufen wird, wenn eine Ansicht gerendert wird. Wenn Sie Daten bei jedem Rendern an eine Ansicht binden möchten, kann Ihnen ein View Composer dabei helfen, diese Logik an einem Ort zu organisieren.
Im folgenden Beispiel registrieren wir den View Composer bei einem Dienstanbieter. Verwenden Sie die View
-Fassade, um auf die zugrunde liegende IlluminateContractsViewFactory
-Vertragsimplementierung zuzugreifen. Standardmäßig verfügt Laravel nicht über ein Verzeichnis zum Speichern von Ansichtskomponisten. Sie müssen das Verzeichnis entsprechend Ihren Anforderungen neu erstellen, zum Beispiel: app/Http/View/Composers
:
<?php namespace App\Providers; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class ViewServiceProvider extends ServiceProvider{ /** * Register bindings in the container. * * @return void */ public function boot() { // Using class based composers... View::composer( 'profile', 'App\Http\View\Composers\ProfileComposer' ); // Using Closure based composers... View::composer('dashboard', function ($view) { // }); } /** * Register the service provider. * * @return void */ public function register() { // } }
{note} Beachten Sie, dass if Sie erstellen einen neuen Dienstanbieter, um Ihren Code für die Registrierung des View Composers zu speichern. Anschließend müssen Sie diesen Dienstanbieter zum
config/app.php
-Array der Konfigurationsdateiproviders
hinzufügen.
Zu diesem Zeitpunkt haben wir den View-Compositor registriert und die profile
-Methode wird jedes Mal ausgeführt, wenn die ProfileComposer@compose
-Ansicht gerendert wird. Definieren wir also die Klasse des View-Compositors:
<?php namespace App\Http\View\Composers; use Illuminate\View\View; use App\Repositories\UserRepository; class ProfileComposer{ /** * The user repository implementation. * * @var UserRepository */ protected $users; /** * Create a new profile composer. * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { // Dependencies automatically resolved by service container... $this->users = $users; } /** * Bind data to the view. * * @param View $view * @return void */ public function compose(View $view) { $view->with('count', $this->users->count()); } }
Die compose
-Methode des View-Compositors wird aufgerufen, bevor die Ansicht gerendert wird, und eine IlluminateViewView
-Instanz wird übergeben. Mit der Methode with
können Sie Daten an eine Ansicht binden.
{tip} Alle View-Compositors werden über den Service-Container aufgelöst, sodass Sie die Abhängigkeiten, die in den Konstruktor des View-Compositors eingefügt werden müssen, mit einem Tipp angeben können.
Ansichtskompositor zu mehreren Ansichten hinzufügen
Ansichtskompositor zu einer Ansicht hinzufügen, indem ein Array von Ansichten als erstes Argument an composer
übergeben wird Methode Compositor zu mehreren Ansichten hinzugefügt:
View::composer( ['profile', 'dashboard'], 'App\Http\View\Composers\MyViewComposer' );
composer
Methode akzeptiert auch Platzhalterzeichen *
, was bedeutet, dass allen Ansichten ein Ansichtskompositor hinzugefügt wird:
View::composer('*', function ($view) { // });
Ansichtskonstruktor
Ansicht Ersteller sind Ansichtskompositoren sehr ähnlich. Der einzige Unterschied besteht darin, dass der Ansichtskonstruktor unmittelbar nach der Instanziierung der Ansicht ausgeführt wird, während der Ansichtskompositor ausgeführt wird, wenn die Ansicht gerade gerendert wird. Verwenden Sie die Methode creator
, um einen Ansichtskonstruktor zu registrieren:
View::creator('profile', 'App\Http\View\Creators\ProfileCreator');