Meine Anwendung hat einige Entitäten in db, und jede enthält Daten über Controller-Namen.Dynamische Weiterleitung an verschiedene Controller
Wenn die Route aufgerufen wird, ruft sie MainController und folgt der Methode, die dann zu anderen Controllern umleitet.
Gibt es einen besseren Weg, dies zu tun?
UPDATE
routes.php
Route::get('/print-pdf/{uniqueID}', Logic\[email protected]');
EditorController.php
protected function dispatchPDF(Request $request, $uniqueID){
$ent = Entity::find($uniqueID);
$variable_name = $ent->controller_name; //for example: LSEntityController
return resolve("\App\Http\Controllers".$variable_name)->printPDF();
}
Dann wird jede Einheit hat verschiedene Controller:
LSEntityController.php
protected function printPDF(Request $request, $uniqueID){
$pdf = \PDF::loadView('map.2017.print',array('data' => $data));
$pdf->setPaper('a4', 'portrait');
return @$pdf->stream('data.pdf');
}
SOEntityController.php
protected function printPDF(Request $request, $uniqueID){
//here is the difference, this method must call some extra methods
$this->compileAndReport();
$pdf = \PDF::loadView('map.2017.print2',array('data' => $data));
$pdf->setPaper('a4', 'portrait');
return @$pdf->stream('data.pdf');
}
Warum kümmern sich Ihre Entitäten um Controller? – delboy1978uk
Weil Entitäten andere Daten benötigen, um PDF zu drucken. – Tim
Schauen Sie sich die Antwort von @ Dees040 an. Entitäten sollten nichts über Controller wissen. Ihre Anfrage sollte über einen Router gehen, der Sie zum Controller leitet und alles mit Ihnen weitergibt.Der ideale Controller sollte einen Dienst aufrufen, der Ihre Daten (Ihre Entität) manipuliert und alle Ausnahmen abfängt und behandelt, das war's. – delboy1978uk