Forklare rutemodellbinding

Forklare rutemodellbinding

Et av de vanligste rutemønstrene er at den første linjen i en hvilken som helst kontrollermetode prøver å finne ressursen med den gitte ID -en.

Rute :: get ('butikker/id', funksjon ($ id)
$ butikker = butikk :: finn ($ id);
);

Laravel gir en funksjon som forenkler dette mønsteret som kalles “Route Model Binding.”Dette lar deg definere at et bestemt parameternavn (e.g., (butikker) vil indikere for rutesolveren at den skal slå opp en veltalende post med den IDen og deretter gi den inn som parameter i stedet for bare å passere IDen.

Det er to typer rutemodellbinding: implisitt og tilpasset (eller eksplisitt).

Implisitt rutemodellbinding

Den enkleste måten å bruke rutemodellbinding er å navngi ruteparameteren noe unikt for den modellen (e.g., Nevn det $ butikk i stedet for $ id), skriv deretter den parameteren i stenging/kontroller -metoden og bruk samme variabelnavn der. Det er lettere å vise enn å beskrive, så se på neste eksempel:

Eksplisitt rutemodellbinding

Rute :: get ('butikker/butikk', funksjon (butikk $ butikk)
Returvis ('butikker.vis ')-> med (' butikk ', $ butikk);
);

Fordi ruteparameteren (Store) er den samme som metodeparameteren ($ butikk), og metodeparameteren er type antydet med en konferansemodell (butikk $ butikk), ser Laravel dette som en rutemodellbinding. Hver gang denne ruten besøkes, vil applikasjonen anta at det som blir sendt inn i URL -en i stedet for Store er en ID som bør brukes til å slå opp en butikk, og deretter vil den resulterende modellforekomsten bli sendt inn i lukking eller kontroller metode.

Tilpasset rutemodellbinding

For å konfigurere rutemodellbinding manuelt, legg til en linje som den i følgende eksempel til støvel() metode i App \ leverandører \ RouteserviceProvider.

public Function Boot (Route $ Router)

// lar bare foreldrenes oppstart () metode fortsatt kjøre
Foreldre :: Boot ($ Router);
// utføre bindingen
$ Router-> Model ('Shop', Store :: klasse);

Du har nå definert at når en rute har en parameter i sin definisjon som heter Shop, vil Route Resolver returnere en forekomst av butikklassen med ID for den URL -parameteren.