Routages de base
La grande majorité des itinéraires de votre application seront définis dans le fichier app/routes.php. L'itinéraire le plus simple dans Laravel consiste en un URI et un appel de fermeture.
Route GET de base
<span style="font-size: 16px;">Route::get('/', function()<br/>{<br/>return 'Hello World';<br/>});<br/></span>
Route POST de base
<span style="font-size: 16px;">Route::post('foo/bar', function()<br/>{<br/>return 'Hello World';<br/>});<br/></span>
Enregistrez-en une Route pour répondre à toutes les méthodes HTTP
<span style="font-size: 16px;">Route::any('foo', function()<br/>{<br/> return 'Hello World';<br/>});<br/></span>
Forcer l'accès à une route via HTTPS
<span style="font-size: 16px;">Route::get('foo', array('https', function()<br/>{<br/> return 'Must be over HTTPS';<br/>}));<br/></span>
Souvent, vous devez générer URL basées sur un itinéraire, vous pouvez le faire en utilisant la méthode URL::to :
<span style="font-size: 16px;">$url = URL::to('foo');<br/></span>
Paramètres d'itinéraire
<span style="font-size: 16px;">Route::get('user/{id}', function($id)<br/>{<br/>return 'User '.$id;<br/>});<br/></span>
Paramètres d'itinéraire facultatifs
<span style="font-size: 16px;">Route::get('user/{name?}', function($name = null)<br/>{<br/>return $name;<br/>});<br/></span>
Paramètres d'itinéraire facultatifs avec valeurs par défaut
<span style="font-size: 16px;">Route::get('user/{name?}', function($name = 'John')<br/>{<br/>return $name;<br/>});<br/></span>
Itinéraire avec contraintes d'expression régulière
<span style="font-size: 16px;">Route::get('user/{name}', function($name)<br/>{<br/>//<br/>})<br/>->where('name', '[A-Za-z]+');<br/>Route::get('user/{id}', function($id)<br/>{<br/>//<br/>})<br/>->where('id', '[0-9]+');<br/></span>
Filtres d'itinéraires
Les filtres d'itinéraires offrent un moyen simple de restreindre l'accès à des itinéraires spécifiques, que vous devez créer pour votre site. Très utile lors de l'authentification. zones. Le framework Laravel contient certains filtres de routage, tels que le filtre auth, le filtre auth.basic, le filtre invité et le filtre csrf. Ils sont stockés dans le fichier app/filters.php.
Définir un filtre de routage
Route::filter('old', function() { if (Input::get('age') < 200) { return Redirect::to('home'); } });
Si une réponse est renvoyée par un filtre de routage, cette réponse est considérée comme la réponse à cette requête, et le routage ne sera pas exécuté. after filter sera également désexécuté.
Route::get('user', array('before' => 'old', function() { return 'You are over 200 years old!'; }));
Spécifier un filtre de route pour une route
Route::get('user', array('before' => 'auth|old', function() { return 'You are authenticated and over 200 years old!'; }));
Spécifier les paramètres du filtre de route
Route::filter('age', function($route, $request, $value) { // }); Route::get('user', array('before' => 'age:200', function() { return 'Hello World'; }));
Lorsque le filtre de route reçoit comme troisième réponse pour les paramètres $ réponse :
Route::filter('log', function($route, $request, $response, $value) { // });
Modèle pour les filtres d'itinéraires de base
Vous souhaiterez peut-être spécifier des filtres pour un ensemble d'itinéraires basés sur un URI.
Route::filter('admin', function() { // }); Route::when('admin/*', 'admin');
Dans l'exemple ci-dessus, le filtre admin sera appliqué à toutes les routes commençant par admin/. L'astérisque agit comme un caractère générique et correspondra à toutes les combinaisons de caractères.
Vous pouvez également contraindre les filtres de modèles en spécifiant des méthodes HTTP :
Route::when('admin/*', 'admin', array('post'));
Classes de filtrage
Pour les filtres avancés, vous pouvez utiliser une classe au lieu d'une fonction de fermeture. Étant donné que la classe de filtre est un conteneur IoC qui réside en dehors de l'application, vous pouvez utiliser l'injection de dépendances dans le filtre, ce qui facilite les tests.
Définir une classe de filtre
class FooFilter { public function filter() { // Filter logic... } }
Enregistrer un filtre basé sur une classe
Route::filter('foo', 'FooFilter');
Routes nommées
Les routes nommées sont plus faciles à utiliser dans Spécifier itinéraires lors de la génération de redirections ou d'URL. Vous pouvez spécifier un nom pour la route comme ceci :
Route::get('user/profile', array('as' => 'profile', function() { // }));
Vous pouvez également spécifier un nom de route pour la méthode du contrôleur :
Route::get('user/profile', array('as' => 'profile', 'uses' => 'UserController@showProfile'));
Désormais, lorsque vous générez des URL ou des sauts en utilisant le nom d'un itinéraire :
$url = URL::route('profile'); $redirect = Redirect::route('profile');
Vous pouvez utiliser la méthode currentRouteName pour obtenir le nom d'un itinéraire :
$name = Route::currentRouteName();
Groupe d'itinéraires
Parfois, vous souhaiterez peut-être appliquer un filtre à un groupe d'itinéraires. Vous n'avez pas besoin de spécifier de filtres pour chaque route, vous pouvez utiliser des groupes de routes :
Route::group(array('before' => 'auth'), function() { Route::get('/', function() { // Has Auth Filter }); Route::get('user/profile', function() { // Has Auth Filter }); });
Routage de sous-domaine
Le routage Laravel peut également gérer les sous-domaines avec caractère générique et obtenir le caractère générique du nom de domaine Paramètres :
Enregistrer la route du sous-domaine
Route::group(array('domain' => '{account}.myapp.com'), function() { Route::get('user/{id}', function($account, $id) { // }); });
Préfixe de la route
Un groupe de routes peut ajouter un préfixe au groupe de routes en utilisant l'option préfixe dans le tableau d'attributs :
Ajouter un préfixe au groupe de routes
Route::group(array('prefix' => 'admin'), function() { Route::get('user', function() { // }); });
Liaison de modèle de route
La liaison de modèle fournit un moyen simple d'injecter des modèles dans les routes. Par exemple, au lieu de simplement injecter l'ID d'un utilisateur, vous pouvez injecter une instance entière de modèle utilisateur basée sur un ID spécifié. Utilisez d'abord la méthode Route::model pour spécifier le modèle requis :
Liez une variable au modèle
Route::model('user', 'User');
Ensuite, définissez une route contenant le paramètre {user} :
Route::get('profile/{user}', function(User $user) { // });
Puisque nous avons lié le paramètre {user} au modèle User, une instance User sera injectée dans la route. Ainsi, par exemple, une requête pour profile/1 injectera une instance User avec l’ID 1.
Remarque : Si cette instance de modèle n'est pas trouvée dans la base de données, une erreur 404 sera générée.
Si vous souhaitez spécifier votre propre comportement qui n'est pas trouvé, vous pouvez passer une fermeture comme troisième argument à la méthode model :
Route::model('user', 'User', function() { throw new NotFoundException; });
Parfois, vous souhaitez utiliser votre propre méthode Pour traiter les paramètres de l'itinéraire, vous pouvez utiliser la méthode Route::bind :
Route::bind('user', function($value, $route) { return User::where('name', $value)->first(); });
Déclenche une erreur 404
Il existe deux façons de déclencher manuellement une erreur 404 dans l'itinéraire. Tout d'abord, vous pouvez utiliser la méthode App::abort :
App::abort(404);
Deuxièmement, vous pouvez lancer une instance de SymfonyComponentHttpKernelExceptionNotFoundHttpException.
Plus d'informations sur la gestion des exceptions 404 et l'utilisation de réponses personnalisées pour ces erreurs sont disponibles dans le chapitre Erreurs.
Routage vers les contrôleurs
Laravel vous permet non seulement d'acheminer vers des fermetures, mais également vers des classes de contrôleurs, et vous permet même de créer des contrôleurs de ressources
Plus d'informations veuillez accéder. documentation du contrôleur.
Pour plus d'articles liés au résumé de la configuration du routage du framework Laravel et aux conseils de configuration, veuillez faire attention au site Web PHP chinois !