Maison  >  Article  >  développement back-end  >  Explication détaillée d'exemples de routage HTTP et de création de contrôleurs et de routage de ressources dans Laravel5.2

Explication détaillée d'exemples de routage HTTP et de création de contrôleurs et de routage de ressources dans Laravel5.2

黄舟
黄舟original
2017-09-11 09:54:321848parcourir

1. Routage HTTP

Toutes les routes sont définies dans le fichier app/Http/routes.php chargé par la classe AppProvidersRouteServiceProvider.

1. Routage de base

Le routage Laravel simple n'accepte qu'un URI et une fermeture


Route::get('foo', function () {
    return 'Hello, Laravel!';
});

Pour les requêtes HTTP courantes, Laravel propose 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.

2. Paramètres de routage


//单个路由参数
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. : contrôleur 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. >2.1 Préfixe de route et espace de noms

Par exemple, il existe deux routes pointant vers des méthodes de contrôleur


Route::get('admin/login', 'Admin\IndexController@login');
Route::get('admin/index', 'Admin\IndexController@index');
Prenons le premier élément comme exemple,

Paramètre 1 :

admin/login

signifie que cet URI demande la ressource admin/login sous le

répertoire racine du site Web , complétez adresse C'est http://domain name/admin/login (La réécriture de route d'Apache est activée ici, cachant "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 :


// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
    Route::get('login', 'IndexController@login');
    Route::get('index', 'IndexController@index');
});

2.2 Routage des ressources

Le routage des ressources est l'itinéraire mappé vers le contrôleur de ressources, Laravel Resource Controller Il a 7 méthodes intégrées pour ajouter, supprimer, modifier et vérifier des ressources et 7 itinéraires. Tout d'abord, créez un

Contrôleur de ressources

ArticleController

Veuillez vous assurer que la commande ci-dessus existe dans le fichier app/Http/Controllers. répertoire Répertoire d'administration.

De cette manière, le contrôleur de ressources est généré dans le fichier app/Http/Controllers/
php artisan make:controller Admin\ArticleController  --resource
Admin/ArticleController.php

Les 7 méthodes intégrées sont les suivantes :


Ensuite, définissez le
<?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)
    {
        //
    }
}
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 Artisan
Route::group(array(&#39;prefix&#39; => &#39;admin&#39;, &#39;namespace&#39; => &#39;Admin&#39;), function(){ 
    Route::get(&#39;login&#39;, &#39;IndexController@login&#39;);
    Route::get(&#39;index&#39;, &#39;IndexController@index&#39;);
    // 资源路由
    Route::resource(&#39;article&#39;, &#39;ArticleController&#39;);
});
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn