Expliquer la liaison du modèle d'itinéraire

Expliquer la liaison du modèle d'itinéraire

L'un des modèles de routage les plus courants est que la première ligne de toute méthode de contrôleur essaie de trouver la ressource avec l'ID donné.

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

Laravel fournit une fonctionnalité qui simplifie ce modèle appelé «liaison du modèle de route."Cela vous permet de définir un nom de paramètre particulier (e.g., (Stores) indiquera au résolveur de route qu'il devrait rechercher un enregistrement éloquent avec cet identifiant, puis le passer comme paramètre au lieu de simplement passer l'ID.

Il existe deux types de liaison du modèle de route: implicite et personnalisé (ou explicite).

Liaison du modèle de route implicite

La façon la plus simple d'utiliser la liaison du modèle d'itinéraire est de nommer votre paramètre d'itinéraire quelque chose d'unique à ce modèle (E.g., Nommez-le $ store au lieu de $ id), puis tapez ce paramètre dans la méthode de fermeture / contrôleur et utilisez le même nom de variable là-bas. C'est plus facile à montrer que de décrire, alors jetez un œil à l'exemple suivant:

Liaison du modèle d'itinéraire explicite

Route :: get ('stores / store', fonction (magasin $ store)
Affichage de retour ('Stores.show ') -> avec (' store ', $ store);
);

Parce que le paramètre de route (store) est le même que le paramètre de méthode ($ store), et le paramètre de la méthode est le type laissé entendre avec un modèle de conférence (Store $ store), Laravel le voit comme une liaison de modèle de route. Chaque fois que cet itinéraire est visité, l'application supposera que tout ce qui est passé à l'URL à la place de store est un identifiant qui devrait être utilisé pour rechercher un magasin, puis cette instance de modèle résultante sera transmise dans votre fermeture ou contrôleur méthode.

Coupure de modèle d'itinéraire personnalisé

Pour configurer manuellement la liaison du modèle d'itinéraire, ajoutez une ligne comme celle de l'exemple suivant à la botte() méthode App \ Providers \ RouteserviceProvider.

BOOT DE FONCTION PUBLIQUE (Router $ routeur)

// permet simplement à la méthode de démarrage () du parent de fonctionner toujours
parent :: boot ($ routeur);
// Effectuez la liaison
$ Router-> Modèle ('boutique', Store :: Class);

Vous avez maintenant défini que chaque fois qu'un itinéraire a un paramètre dans sa définition nommé Shop, le Route Resolver renverra une instance de la classe de magasin avec l'ID de ce paramètre URL.