Bei der Arbeit mit mehreren Controllern in Laravel kann es Situationen geben, in denen Sie von einem Controller innerhalb eines anderen auf eine Methode zugreifen müssen . Dies kann durch verschiedene Techniken erreicht werden, wie unten beschrieben.
Dieser Ansatz beinhaltet den direkten Zugriff auf die Controller-Methode über die App-Fassade:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
While Dies funktioniert, es wird nicht für Code-Organisationszwecke empfohlen.
Eine andere Möglichkeit besteht darin, den Controller zu erben, der die gewünschte Methode enthält. Wenn beispielsweise SubmitPerformanceController auf die getPrintReport-Methode von PrintReportController zugreifen muss:
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
Dieser Ansatz kann jedoch zur Vererbung unnötiger Methoden führen.
Eigenschaften sind eine bevorzugte Lösung für die gemeinsame Nutzung gemeinsamer Funktionen zwischen Controllern ohne die Nachteile der Vererbung. So verwenden Sie Eigenschaften:
Erstellen Sie eine Eigenschaft
Definieren Sie eine Eigenschaft in der App/Eigenschaften:
<code class="php">trait PrintReport { public function getPrintReport() { // ... } }</code>
Fügen Sie die Eigenschaft ein in Controllern
Fügen Sie das Merkmal zu beiden Controllern hinzu:
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
Mit diesem Ansatz können beide Controller über $this->getPrintReport() auf die getPrintReport-Methode zugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich in Laravel 5 auf Methoden von einem Controller in einem anderen Controller zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!