Spiegare il legame del modello di percorso

Spiegare il legame del modello di percorso

Uno dei modelli di routing più comuni è che la prima riga di qualsiasi metodo controller cerca di trovare la risorsa con l'ID indicato.

Route :: get ('Stores/id', funzione ($ id)
$ Stores = Store :: Find ($ id);
);

Laravel fornisce una caratteristica che semplifica questo modello chiamato "legame del modello di rotta."Ciò consente di definire che un particolare nome di parametro (e.G., ;.

Esistono due tipi di legame del modello di percorso: implicito e personalizzato (o esplicito).

Legame del modello di rotta implicito

Il modo più semplice per utilizzare il legame del modello di percorso è nominare il parametro del percorso qualcosa di unico per quel modello (e.G., Nomina $ Store invece di $ ID), quindi digita quel parametro nel metodo di chiusura/controller e usa lo stesso nome variabile lì. È più facile da mostrare che descrivere, quindi dai un'occhiata al prossimo esempio:

Legame del modello di rotta esplicito

Route :: get ('Stores/Store', funzione (Store $ Store)
return View ('Stores.mostra ')-> with (' store ', $ store);
);

Poiché il parametro del percorso (Store) è lo stesso del parametro del metodo ($ Store) e il parametro del metodo è il tipo suggerita con un modello di conferenza (Store $ Store), Laravel lo vede come un legame del modello di rotta. Ogni volta che questo percorso viene visitato, l'applicazione assumerà che tutto ciò che viene passato nell'URL al posto di Store è un ID che dovrebbe essere utilizzato per cercare un negozio e quindi l'istanza del modello risultante verrà passata alla chiusura o al controller metodo.

Binding del modello di percorso personalizzato

Per configurare manualmente l'associazione del modello di route, aggiungere una riga come quella nell'esempio seguente al stivale() metodo in App \ Provider \ RouteServiceProvider.

Avvio della funzione pubblica (Router Router)

// consente solo il metodo di boot () di genitore di eseguire ancora
genitore :: boot ($ router);
// Esegui il legame
$ router-> modello ('shop', negozio :: class);

Ora hai definito che ogni volta che un percorso ha un parametro nella sua definizione denominata shop, il route resolver restituirà un'istanza della classe Store con l'ID di quel parametro URL.