以下对Laravel 框架的说明都是在Laravel5.1 的基础上进行的
定义中间件时的Closure $next怎么理解
public function handle($request, Closure $next)
{
if ($request->input('age') < 200)
{
return redirect('home');
}
return $next($request);
}
Closure $next定义了一个匿名函数 ,
return $next($request); 一般是将请求传给绑定的匿名函数。
在路由中使用中间件时,如下
Route::group(["prefix"=> "home","middleware"=>"ceshi"], function () { Route::get('home','HomeController@index'); });你得先将中间件在
app/Http/Kernel.php
配置一个键值,不然就会报错。
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'ceshi' => \App\Http\Middleware\Ceshi::class, ];
Route::group(["middleware"=>"ceshi"], function () { Route::get('home/index','HomeController@index'); //在给控制器路由命名的时候,键值 uses 必不可少 Route::get('home/add',["as"=>"add1","uses"=>'HomeController@add']); });