需求
添加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的參數才能通過
再次請求
可以看到,中間件也已經生效