Cet article vous présente une introduction au routage HTTP, à la création de contrôleurs et au routage des ressources dans Laravel 5.2 (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
1. Routage HTTP
Toutes les routes sont définies dans le fichier app/Http/routes.php chargé par la classe AppProvidersRouteServiceProvider.
Le routage Laravel simple n'accepte qu'un URI et une fermeture
Route::get('foo', function () { return 'Hello, Laravel!'; });
Pour Pour commun Requêtes HTTP, Laravel a les routes suivantes :
Route::get($uri, $callback); //响应 get 请求 Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback); Route::match(['get', 'post'], $uri, $callback); //响应 get, post 请求 Route::any('foo', $callback); //响应所有请求
Parmi elles, $callback peut être une méthode de fermeture ou de contrôleur. En fait, il existe de nombreuses situations de développement dans lesquelles des méthodes de contrôleur sont utilisées.
//单个路由参数 Route::get('user/{id}', function ($id) { return 'User '.$id; }); //多个路由参数 Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { // }); //单个路由参数(可选) Route::get('user/{id?}', function ($id = 1) { return 'User '.$id; }); //多个路由参数(可选) Route::get('posts/{post}/comments/{comment?}', function ($postId, $commentId = 1) { // }); //注意:多个参数时,只可以对最后一个参数设置可选,其他位置设置可选会解析错误 // 正则约束单个参数 Route::get('user/{name?}', function ($name = 'Jone') { return $name; })->where('name', '\w+'); //约束参数为单词字符(数字、字母、下划线) // 正则约束多个参数 Route::get('user/{id}/{name}', function ($id, $name) { // })->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
2. Créez un contrôleur
Utilisez la commande Artisan pour créer php artisan make:controller UserController
Maintenant, le fichier du contrôleur UserController.php est généré dans le répertoire du contrôleur app/Http/Controllers.
3. Routage avancé
1. Itinéraire nommé
//命名闭包路由 Route:get('user', array('as' => 'alial', function(){}); //或 name 方法链 Route:get('user', function(){})->name('alias'); //命名控制器方法路由 Route:get('user', array('uses' => 'Admin\IndexController@index', 'as' => 'alias')); //或 name 方法链 Route:get('user', 'Admin\IndexController@index')->name('alias'));
2.1 Routage. Préfixes et espaces de noms
Par exemple, il existe deux routes pointant vers des méthodes de contrôleur
Prenez la première,
Route::get('admin/login', 'Admin\IndexController@login'); Route::get('admin/index', 'Admin\IndexController@index');Paramètre 1 :
admin /login signifie que cet URI demande la ressource admin/login dans le répertoire racine du site Web. L'adresse complète est
http://nom de domaine/admin/login (la réécriture de route d'Apache est activée ici, masquant l'"index". " .php" ), cette requête est mappée à la méthode du contrôleur spécifiée dans le deuxième paramètre. Notez que le répertoire racine du site Web est le répertoire où se trouve le fichier d'entrée, qui est le répertoire public de Laravel. Il est préférable de pointer ici lors de la configuration du serveur.Paramètre deux : AdminIndexController@login signifie que cette méthode de contrôleur se trouve sous l'espace de noms AppHttpControllers et que la connexion est la méthode de connexion dans le contrôleur AppHttpControllersAdminIndexController.
Évidemment, l'URI et la méthode du contrôleur des deux routes ont les mêmes parties. Ensuite, activer le regroupement de routes peut extraire les parties communes :
2.2 Routage des ressources
// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分 Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){ Route::get('login', 'IndexController@login'); Route::get('index', 'IndexController@index'); });
Le routage des ressources est l'itinéraire mappé au contrôleur de ressources Laravel a 7 méthodes et 7 routes intégrées pour ajouter, supprimer, modifier et vérifier les ressources. Tout d'abord, créez le contrôleur de ressources ArticleController
Cela générera le contrôleur de ressources dans le fichier app/Http/Controllers/Admin/ArticleController.php (Admin Le dossier sera créé automatiquement s'il n'existe pas). Les 7 méthodes intégrées sont les suivantes :php artisan make:controller Admin/ArticleController --resource
<?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class LinksController extends Controller { /** * 显示一个资源的列表 * * @return \Illuminate\Http\Response */ public function index() { // } /** * 显示一个表单来创建一个新的资源 * * @return \Illuminate\Http\Response */ public function create() { // } /** * 保存最新创建的资源 * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * 显示指定的资源 * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * 显示一个表单来编辑指定的资源 * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * 更新指定的资源 * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * 删除指定的资源 * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } }
Ensuite, définissez le routage des ressources. Ici je choisis toujours de le définir sous le groupe de routage, il suffit d'en définir un
Enfin, vérifiez l'itinéraire. Avec le contrôleur de ressources et le routage des ressources, vous pouvez consulter les méthodes de requête HTTP pour les 7 méthodes ci-dessus. Utilisez la commande ArtisanRoute::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){ Route::get('login', 'IndexController@login'); Route::get('index', 'IndexController@index'); // 资源路由 Route::resource('article', 'ArticleController'); });php artisan route:list pour répertorier toutes les routes actuelles, y compris les méthodes de requête, les URI, les méthodes de contrôleur et le middleware.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!