Recherche…


Liaison Implicite

Laravel résout automatiquement les modèles Eloquent définis dans les itinéraires ou les actions de contrôleur dont les noms de variable correspondent à un nom de segment de route. Par exemple:

Route::get('api/users/{user}', function (App\User $user) {
    return $user->email; 
});

Dans cet exemple, comme la variable utilisateur Eloquent $ définie sur la route correspond au segment {utilisateur} dans l'URI de la route, Laravel injectera automatiquement l'instance de modèle dont l'ID correspond à la valeur correspondante de l'URI de la demande. Si une instance de modèle correspondante n'est pas trouvée dans la base de données, une réponse HTTP 404 sera automatiquement générée.

Si le nom de la table du modèle est composé de plusieurs mots, pour que la liaison de modèle implicite fonctionne, la variable d'entrée doit être en minuscules;
Par exemple, si l'utilisateur peut effectuer une action quelconque et que nous voulons accéder à cette action, l'itinéraire sera le suivant:

Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) {
    return $useraction->description; 
});

Reliure Explicite

Pour enregistrer une liaison explicite, utilisez la méthode du modèle du routeur pour spécifier la classe d'un paramètre donné. Vous devez définir vos liaisons de modèle explicites dans la méthode de démarrage de la classe RouteServiceProvider

public function boot()
{
   parent::boot();

   Route::model('user', App\User::class);
}

Ensuite, nous pouvons définir une route contenant le paramètre {utilisateur}.

$router->get('profile/{user}', function(App\User $user) {
  
});

Comme nous avons lié tous {user} paramètres {user} au modèle App\User , une instance User sera injectée dans la route. Ainsi, par exemple, une demande de profile/1 injectera l'instance d'utilisateur de la base de données dont l' identifiant est 1 .

Si une instance de modèle correspondante n'est pas trouvée dans la base de données, une réponse HTTP 404 sera automatiquement générée.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow