Erläuterung der Routenmodellbindung

Erläuterung der Routenmodellbindung

Eines der häufigsten Routing -Muster ist, dass die erste Zeile jeder Controller -Methode versucht, die Ressource mit der angegebenen ID zu finden.

Route :: get ('store/id', function ($ id)
$ stores = store :: find ($ id);
);

Laravel bietet eine Funktion, die dieses Muster mit dem Namen „Routenmodellbindung vereinfacht.Dies ermöglicht Ihnen, diesen Parameternamen (e) zu definieren.G., (speichert) Zeigt auf den Route Resolver an, dass er mit dieser ID einen beredten Datensatz nachschlagen und dann als Parameter weitergeben sollte, anstatt nur die ID zu übergeben.

Es gibt zwei Arten von Routenmodellbindung: implizit und individuell (oder explizit).

Implizite Routenmodellbindung

Der einfachste Weg, die Routenmodellbindung zu verwenden, besteht darin, Ihren Routenparameter etwas einzigartiges für dieses Modell zu benennen (e.G., Nennen Sie es $ Store anstelle von $ id), dann typeTt diesen Parameter in der Verschluss-/Controller -Methode und verwenden Sie dort den gleichen variablen Namen. Es ist einfacher zu zeigen als zu beschreiben. Schauen Sie sich also das nächste Beispiel an:

Explizite Routenmodellbindung

Route :: get ('Store/Store', Funktion (speichern $ store)
Rückgabeansicht ('Stores.Show ')-> mit (' store ', $ store);
);

Da der Routenparameter (Store) der Methodeparameter ($ Store) übereinstimmt und der Methodeparameter mit einem Konferenzmodell (Store $ Store) angedeutet wird, sieht Laravel dies als Routenmodellbindung an. Jedes Mal, wenn diese Route besucht wird, wird die Bewerbung angenommen, dass alles, was anstelle von Store in die URL übergeben wird Methode.

Benutzerdefinierte Routenmodellbindung

Um die Routenmodellbindung manuell zu konfigurieren Stiefel() Methode in App \ Providers \ RouteServiceProvider.

öffentlicher Funktionsstart (Route $ Router)

// Ermöglicht die Start () -Methode des übergeordneten Methode immer noch aus
Eltern :: Boot ($ router);
// die Bindung durchführen
$ router-> model ('shop', store :: class);

Sie haben jetzt definiert, dass der Routenresolver, wenn eine Route einen Parameter in seiner Definition mit dem Namen Shop hat, eine Instanz der Store -Klasse mit der ID dieses URL.