Explicando a ligação do modelo de rota

Explicando a ligação do modelo de rota

Um dos padrões de roteamento mais comuns é que a primeira linha de qualquer método do controlador tenta encontrar o recurso com o ID fornecido.

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

O Laravel fornece um recurso que simplifica esse padrão chamado “Vinculação do modelo de rota.”Isso permite definir que um nome de parâmetro específico (e.g., (storores) indicará ao resolvedor de rota que deve procurar um registro eloqüente com esse id e depois o passará como o parâmetro em vez de apenas passar o ID.

Existem dois tipos de ligação ao modelo de rota: implícito e personalizado (ou explícito).

Vinculação implícita de modelo de rota

A maneira mais simples de usar a ligação ao modelo de rota é nomear seu parâmetro de rota algo exclusivo para esse modelo (e.g., Nomeie -o $ Store em vez de $ id), então typeHint esse parâmetro no método de fechamento/controlador e use o mesmo nome de variável lá. É mais fácil mostrar do que descrever, então dê uma olhada no próximo exemplo:

Vinculação explícita de modelo de rota

Rota :: get ('storores/store', function (store $ store)
Retornar View ('lojas.mostrar ')-> com (' Store ', $ Store);
);

Como o parâmetro de rota (store) é o mesmo que o parâmetro do método ($ store), e o parâmetro do método é o tipo de tipo de modelo de conferência (loja $ store), o Laravel vê isso como um modelo de rota para ligação. Toda vez que essa rota é visitada, o aplicativo assumirá que tudo o que for passado para o URL no lugar de store é um ID que deve ser usado para procurar uma loja e, em seguida, essa instância do modelo resultante será transmitida para o seu fechamento ou controlador método.

Vinculação de modelo de rota personalizada

Para configurar manualmente a ligação do modelo de rota, adicione uma linha como a do exemplo a seguir ao bota() método em App \ Provedores \ RouteServiceProvider.

inicialização de funções públicas (rota $ roteador)

// apenas permite que o método de inicialização do pai () ainda seja executado
pai :: boot ($ roteador);
// Execute a ligação
$ roteador-> modelo ('shop', store :: classe);

Você já definiu que sempre que uma rota tiver um parâmetro em sua definição denominada shop, o resolvedor de rota retornará uma instância da classe Store com o ID desse parâmetro de URL.