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?

War es hilfreich?

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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top