需求
添加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的参数才能通过
再次请求
可以看到,中间件也已经生效