Sprache:

Suche

Aufräumen von Blade-Vorlagen mit View Composer

  • Teilen:
Aufräumen von Blade-Vorlagen mit View Composer

Das Problem

Es war schon immer eine schlechte Praxis von Entwicklern, die Datenbank direkt von den Blade-Dateien aus abzufragen. Laravel. In Ihrer Vorlagendatei haben Sie zum Beispiel etwas wie das folgende verwendet:

@foreach(App\User::all() as $user)
    <li>{{$user}}</li>
@endforeach

Das mag gut funktionieren, aber Sie rufen direkt die User Modell innerhalb Ihrer Blade-Datei. Gute Praxis sagt, dass Ihre View-Datei nicht wissen sollte, was innerhalb und außerhalb Ihrer Datenbank passiert.

Wir werden uns ein paar Lösungen ansehen, um dies effizient zu bewältigen.

Lösung # 1 - Pass it from the View

In Ihrem UserController Methode, die Sie verwenden. Sie können Ihre Variablen wie folgt übergeben

$users = App\User::all();

return view('user',compact('users'));

Dies kann ein Workaround sein, aber stellen Sie sich vor, Sie müssen Benutzer an jede einzelne Ansicht weitergeben, in der Sie Ihre Benutzer anzeigen möchten. Nun, verlieren Sie nicht die Hoffnung, Laravel hat Sie abgedeckt.

Lösung # 2 - View Composers

In Ihrem AppServiceProvider.php, nutzen Sie Ihre boot() Methode, um den View Composer an Ihre Anwendung weiterzugeben und ihn dort zu verwenden, wo Sie es wünschen.

public function boot()
{
    \View::share('users',App\User::all());
}

Sie können nun Folgendes verwenden users Variable in einer beliebigen Blade-Datei Ihrer Anwendung ohne Probleme zu verwenden.

Der Anwendungsfall

Jetzt können Sie einfach in Ihrem file.blade.php

@foreach($users as $user)
 <li>{{$user}}</li>
@endforeach

Schlussfolgerung

Sie können eine separate ServiceProvider für Ihre View Composers, aber das ist nicht notwendig, es sei denn, Ihr appServiceProvider ist überlastet. Spielen Sie damit herum und lassen Sie uns wissen, wenn Sie nicht weiterkommen.

Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn bitte mit Ihren Entwicklerfreunden. Sie können uns auch folgen auf Twitter.

Usama Muneer

Usama Muneer

A web enthusiastic, self-motivated & detail-oriented professional Full-Stack Web Developer from Karachi, Pakistan with experience in developing applications using JavaScript, WordPress & Laravel specifically. Loves to write on different web technologies with an equally useful skill to make some sense out of it.