Explicar la vinculación del modelo de ruta

Explicar la vinculación del modelo de ruta

Uno de los patrones de enrutamiento más comunes es que la primera línea de cualquier método de controlador intenta encontrar el recurso con la identificación dada.

Ruta :: get ('Stores/id', function ($ id)
$ tiendas = store :: find ($ id);
);

Laravel proporciona una característica que simplifica este patrón llamado "Vínculos del modelo de ruta."Esto le permite definir que un nombre de parámetro particular (e.gramo., (tiendas) indicará al resolución de la ruta que debe buscar un registro elocuente con esa identificación y luego pasarlo como el parámetro en lugar de pasar la identificación.

Hay dos tipos de vinculación del modelo de ruta: implícito y personalizado (o explícito).

Enlace de modelo de ruta implícita

La forma más sencilla de usar la vinculación del modelo de ruta es nombrar su parámetro de ruta algo único para ese modelo (e.gramo., Nombrarlo $ Store en lugar de $ ID), luego escriba ese parámetro en el método de cierre/controlador y use el mismo nombre de variable allí. Es más fácil de mostrar que describir, así que eche un vistazo al siguiente ejemplo:

Enlace del modelo de ruta explícita

Ruta :: get ('Stores/store', function (store $ store)
Vista de retorno ('tiendas.show ')-> con (' tienda ', $ tienda);
);

Debido a que el parámetro de ruta (store) es el mismo que el parámetro de método ($ store), y el parámetro del método se insinúa con un modelo de conferencia (tienda $ store), Laravel ve esto como un modelo de ruta vinculante. Cada vez que se visita esta ruta, la aplicación asumirá que lo que se pase en la URL en lugar de Store es una ID que debe usarse para buscar una tienda y luego esa instancia de modelo resultante se pasará a su cierre o controlador método.

Enlace del modelo de ruta personalizada

Para configurar manualmente el enlace del modelo de ruta, agregue una línea como la que está en el siguiente ejemplo al bota() método en App \ Providers \ RuteserviceProvider.

arranque de función pública (ruta $ enrutador)

// solo permite que el método de arranque del padre todavía se ejecute
parent :: boot ($ enrutador);
// realizar la encuadernación
$ enrutador-> modelo ('shop', store :: class);

Ahora ha definido que cada vez que una ruta tiene un parámetro en su definición llamada Shop, el resolución de ruta devolverá una instancia de la clase de almacenamiento con la ID de ese parámetro URL.