Laravel如何添加路由模块

需求

添加open模块,路由规则和控制器能独立存放,最终可以通过/open/xxx访问到Open/xxxController.php的控制器的方法

步骤

1.创建路由文件

routes文件夹创建open.php文件

代码如下

<?php
/**
 * open.php 2020年03月17日 3:40 下午
 * @author chenqionghe
 */

Route::group(['middleware' => []], function () {
    
});

2.注册路由文件

将创建的open文件注册到App/Http/Providers/RouteServiceProvider.php,代码如下

    public function map()
    {
        Route::prefix('open')//路由前缀
        ->middleware('open')//路由组
        ->namespace("{$this->namespace}\\Open")//命名空间
        ->group(base_path('routes/open.php'));//路由文件路径
        //...其他路由代码忽略
    }

解释

  • middleware('open'):代表有一个路由组叫open
  • namespace("{$this->namespace}\Open'"):指定命名空间
  • group(base_path('routes/open.php')):指定路由文件

3.创建中间件文件

例如需要验证路由模块的中间件,这里名字我叫OpenAuth

 php artisan make:middleware OpenAuth

生成代码如下

4.注册中间件组

将创建的中间件OpenAuth添加到middlewareGroups,组名为上面写的open

    protected $middlewareGroups = [
        //默认代码省略
        'open' => [
            \App\Http\Middleware\OpenAuth::class
        ],
    ];

5.创建控制器

执行命令

php artisan make:controller Open/IndexController --resource

会在Controllers下创建Open文件夹和IndexController.php文件
我们修改下,返回hello world

6.自定义路由规则

将生成的控制器注册到路由规则
如下

<?php
/**
 * open.php 2020年03月17日 3:40 下午
 * @author chenqionghe
 */

Route::group(['middleware' => []], function () {
    Route::get('/test', 'IndexController@index');
});

测试

访问测试

访问/open/test,如下,访问已经成功

中间件测试

修改OpenAuth,检测必须传递一个sign=1234的参数才能通过

再次请求


可以看到,中间件也已经生效

posted @ 2020-03-17 16:17  雪山飞猪  阅读(1722)  评论(2编辑  收藏  举报