Ricerca…
Legame implicito
Laravel risolve automaticamente i modelli Eloquent definiti in rotte o azioni del controllore i cui nomi di variabili corrispondono a un nome di segmento di percorso. Per esempio:
Route::get('api/users/{user}', function (App\User $user) {
return $user->email;
});
In questo esempio, poiché la variabile utente Eloquent $ definita sulla route corrisponde al segmento {user} nell'URI della rotta, Laravel inietterà automaticamente l'istanza del modello che ha un ID corrispondente al valore corrispondente dall'URI della richiesta. Se nel database non viene trovata un'istanza di modello corrispondente, verrà generata automaticamente una risposta HTTP 404.
Se il nome della tabella del modello è composto da più parole, per rendere funzionante il binding del modello implicito la variabile di input dovrebbe essere in minuscolo;
Ad esempio, se l'utente può eseguire un qualche tipo di azione e vogliamo accedere a questa azione, il percorso sarà:
Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) {
return $useraction->description;
});
Legame esplicito
Per registrare un'associazione esplicita, utilizzare il metodo del modello del router per specificare la classe per un determinato parametro. È necessario definire i collegamenti del modello esplicito nel metodo di avvio della classe RouteServiceProvider
public function boot()
{
parent::boot();
Route::model('user', App\User::class);
}
Successivamente, possiamo definire una rotta che contiene il parametro {utente}.
$router->get('profile/{user}', function(App\User $user) {
});
Dal momento che abbiamo associato tutti {user}
parametri {user}
al modello App\User
, un'istanza User verrà inserita nella route. Quindi, per esempio, una richiesta al profile/1
inietterà l'istanza Utente dal database che ha un ID di 1 .
Se un'istanza del modello corrispondente non viene trovata nel database, verrà generata automaticamente una risposta HTTP 404 .