Modèle d`itinéraire

Si une instance de modèle correspondante est introuvable dans la base de données, une réponse HTTP 404 sera générée automatiquement. Vous pouvez en savoir plus sur la liaison de modèle de route dans la documentation. En utilisant la façade route pour lier un paramètre à un modèle, nous pouvons faire quelque chose comme ceci: en travaillant avec beaucoup de terminaux et de contrôleurs, il est agréable de les garder propres autant que possible. De petites solutions comme la liaison de modèle de route de Laravel nous aident à garder nos contrôleurs plus propres. 1) il doit charger l`utilisateur via la liaison de modèle de route, puis…. Par défaut, l`infrastructure recherche la colonne ID dans notre base de données. Si nous voulons utiliser une autre clé pour notre reliure, nous pouvons la personnaliser dans nos modèles éloquent. Tout ce que nous avons à faire est d`ajouter la méthode getRouteKeyName au modèle que nous voulons modifier. Tout comme le nom l`indique, vous devez explicitement dire à laravel que vous voulez qu`il lie un paramètre d`URL à un modèle particulier. Il y a deux façons de le faire, nous pourrions lier un paramètre à un modèle à l`aide de la façade de route fournie ou effectuer cette liaison dans App/Providers/RouteServiceProvider. php (je préfère cette méthode). Comme nous le voyons, il y a une ligne supplémentaire dans notre méthode, où nous regardons le modèle éloquent pertinent. Nous pouvons automatiser cette étape en utilisant la liaison.

Nous pouvons le faire de manière explicite et implicite. Bien que nous ayons vu la liaison de modèle explicite, voici un exemple de liaison de modèle implicite maintenant: nous pourrions également donner à notre liaison plus de sens, par exemple ce que si nous voulons un poste que si est un projet? Pour cela, nous pourrions changer le deuxième paramètre de la route:: bind à une fermeture qui prend le paramètre d`itinéraire comme sa valeur. Ceci est rendu possible en disant à Laravel d`injecter un modèle de poteau dans n`importe quel contrôleur de route qui a un paramètre {post} attaché à lui. Les paramètres de routage sont toujours encastrés dans les accolades {} et doivent comporter des caractères alphabétiques et ne peuvent pas contenir de caractère. Au lieu d`utiliser le caractère-, utilisez un trait de soulignement (_). Les paramètres d`artère sont injectés dans des rappels/contrôleurs d`artère basés sur leur ordre-les noms des arguments de rappel/contrôleur n`ont pas d`importance. Maintenant, Laravel résoudra automatiquement la catégorie à l`aide du paramètre ID et lèvera une exception si le modèle n`existe pas. La seule différence entre l`utilisation de la façade route et de la classe RouteServiceProvider est que-l`enregistrement de vos liaisons se fait dans la méthode de démarrage de la classe RouteServiceProvider (l`emplacement est le répertoire App/Providers) et la méthode Bind est appelée sur le $router l`objet injecté dans la méthode. Exemple rapide nous testons pour voir si l`exception levée est une instance de ModelNotFoundException.

Nous pouvons également tester le nom du modèle pour afficher le message d`erreur approprié.