2016-05-06 2 views
1

Was ich getan habe

Ich habe eine Liste von Sachen aus meiner Datenbank abgerufen und in einer Liste angezeigt. Nennen wir es "stuff-list". Der Router zeigt diese Liste an, wenn ich '/stufflist' bekomme. Der verbundene Controller ruft die Daten ab und übergibt sie an die Vorlage.Wie man eine Komponente in Laravel MIT seiner Controller-Funktionalität wiederverwenden kann

Was will ich

Ich möchte zeigen diese Liste auf anderen Seiten (in meinem Fall: ein Armaturenbrett) tun, wo die Liste nur eine Komponente neben anderen.

Was ist die beste Praxis? Wenn ich /dashboard tippe, bekomme ich natürlich einen Fehler, weil die Stuff-Liste ich dort einschließen habe, hat die Daten von ihm nicht Controller.

Ich möchte nicht das Abrufen der Daten in jedem Controller für jede Vorlage implementieren Ich verwende die Stuff-Liste in. Muss ich eine Art Repository implementieren und dies in jedem Controller für jede Vorlage verwenden einschließlich der stuff-list? Oder gibt es einen besseren Weg?

Was ich tun möchte, ist eine Komponente zu erstellen, die den Stoff und einen Controller anzeigt, der an diese Komponente gebunden ist. Jedes Mal, wenn ich diese Komponente (Anzeige der Inhalte) auf irgendeiner Seite anschließe, sollte sie mit all der Logik dahinter enthalten sein.

Wie mache ich das? Danke für Ihre Hilfe!

+0

Vielleicht hilft dir das ein bisschen. [Übergabe der gleichen Daten über verschiedene Ansichten in Laravel] (http://stackoverflow.com/questions/22835002/passing-the-same-data-over-different-view-in-laravel?answertab=votes#tab-top) oder diese [Wie kann ich Daten von einem anderen Controller in einem Laravel-View freigeben?] (http://StackOverflow.com/Questions/26470130/How-Can-I-Share-Data-For-Ander-) controller-in-a-laravel-view? answertab = votes # tab-top) Oder verwende die Methode @haakym, die mit '@ inject' in deiner Blade-Vorlage verwendet wird. – Devsome

Antwort

0

Haben Sie in Betracht gezogen Service Injection? Wenn Sie ein Blatentemplate verwenden, können Sie davon profitieren.

Lassen Sie uns sagen, dass Ihre Interaktion mit dem DB der Stoff-Liste in einem Verfahren ist in einem Modell zu erhalten oder in einer eigenen Abfrageklasse Sie so etwas wie dies in Ihrem Blade-Vorlage tun können:

@inject('stuffList', 'App\Queries\StuffList') 

<div> 
    Monthly Revenue: {{ $stuffList->get() }}. 
</div> 

Sie können dann extrahiere das Teil, wo es verwendet wird, zu einem Partial und ziehe das in eine Masterschablone oder eine Blade-Datei mit @include see: Including sub views

+0

Vielleicht den Kommentar zu der Frage? – haakym