Laravel ruft Parameter im Klassenkonstruktor ab [Duplikat]
Frage
Hier ist meine Route:
Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));
Wie kann ich das Argument $companyId im __constructor abrufen, um zu vermeiden, dass es in allen meinen Aktionen separat abgerufen wird?
Lösung
Wenn Sie die Parameter im __construct Ihres Controllers abrufen möchten, können Sie Folgendes tun:
class HomeController extends \BaseController
{
public function __construct()
{
$this->routeParamters = Route::current()->parameters();
}
}
Es wird eine Schlüsselwertliste mit Parametern für die Route zurückgegeben (z. B.: ['companyId' => '1']
) @see \Illuminate
outing
oute
Sie können einen bestimmten Parameter auch mithilfe von abrufen getParameter() oder Parameter() Methoden.
NOTIZ: Ich bin mir allerdings nicht sicher, ob das eine so tolle Idee ist.Möglicherweise gibt es eine elegantere Lösung oder einen besseren Ansatz für Ihr Problem.
Andere Tipps
Wenn Sie den Prozess vereinfachen möchten, scheint die Routenmodellbindung der einfachste Weg zu sein.Anstatt bei jeder Aktion Ihres Controllers nach der richtigen Modellinstanz suchen zu müssen, übergeben Sie während des Routing-Prozesses das richtige Modell an Ihren Controller.
Sie müssen jedoch Route::resource verwenden.In „routes.php“:
Route::bind('company', 'Company');
Route::resource('company', 'HomeController');
Dann haben Sie eine Instanz der Kategorie an Ihren Controller übergeben.Zum Beispiel für /company/1 :
public function show($company)
{
// Here you can use, for instance, $company->name
}