中間件的作用:
過濾進入應用程序的http請求。
比如,有一個活動,在活動開始前進入活動頁則跳轉到宣傳頁
使用步驟:
1 創建中間件 \app\Http\Middleware\Activity.php
php artisan make:middleware Activity
<?php namespace App\Http\Middleware; use Closure; class Activity { /** * Handle an incoming request. * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request,Closure $next){ if(time() < strtotime('2020-08-06')){ return redirect('activity0'); } return $next($request); } }
2 控制器方法 \app\Http\Controllers\StudentController.php
public function activity0() { return '活動快要開始了'; } public function activity1() { return '活動進行中,感謝你的參與1'; } public function activity2() { return '活動進行中,感謝你的參與2'; }
3 設置路由 \routes\web.php
//宣傳頁面 Route::any('activity0',['uses'=>'StudentController@activity0']); //活動頁面: Route::group(['middleware'=>['activity']],function (){ Route::any('activity1',['uses'=>'StudentController@activity1']); Route::any('activity2',['uses'=>'StudentController@activity2']); });
4 注冊路由 \app\Http\Kernel.php
protected $routeMiddleware = [ 。。。。。 'activity' => \App\Http\Middleware\Activity::class, ];
前置操作與后置操作
public function handle($request,Closure $next) { echo '【我是前置操作】'; $response = $next($request);//$next($request)本質上就是response echo($response); echo '【我是后置操作】'; }
$next($request)就是response 在此之間的就是前置操作,后面的就是后置操作。。。。。