您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
Laravel基础之中间件
发布时间:2019-09-08 19:40:17编辑:雪饮阅读()
路由别名与route函数
定义一个路由如:
Route::get('/Admin/User/index', [
'as'=>'ulist',
'uses'=>function(){
echo route('ulist');
}
]);
这里定义了一个"/Admin/User/index "的路由,并以“ulist”作其别名
route函数可以用某个路由生成具体的访问url
路由分组
Route::group([],function(){
Route::get('/', function () {
return view('welcome');
});
Route::get('/Admin/User/index', [
'as'=>'ulist',
'uses'=>function(){
echo route('ulist');
}
]);
});
404页面定制及404抛出
页面定制
将resources/views/errors中的503模板复制一份命名为404模板,则当不存在路由被访问时则自动返回该404模板
404抛出
不一定要在访问不存在的路由时候自动返回404模板,我们也可以在某个路由里手动抛出404,则也可以使得该路由被访问时自动返回404模板,如:
Route::get('/404', function () {
abort(404);
});
中间件安装
生成中间件
在项目根目录(非public)以cmd运行如下命令:
D:\7n\blog>php artisan make:middleware TestMiddleware
Middleware created successfully.
这里生成了一个名为test的中间件
配置中间件
然后在app/http/middleware下就能找到刚才生成的中间件
然后我们可以在该中间件的handle中对请求的路由进行类似日志记录等功能,如:
public function handle($request, Closure $next)
{
$path=$request->path();
file_put_contents('20190908log.txt',$path);
return $next($request);
}
全局注册中间件
在app/http下的kernel.php中的kernel类的middleware属性中可以全局注册中间件,如:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\TestMiddleware::class,
];
效果
此时你访问路由的时候都会被生成日志记录,存在于public目录中
路由方式注册中间件
在app/http下的kernel.php中的kernel类的routeMiddleware属性中可以路由方式注册中间件(根据某个路由别名单独指定中间件),如:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'ulist'=>\App\Http\Middleware\TestMiddleware::class
];
独立指定中间件
在kernel中路由方式注册中间件如下:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'test'=>\App\Http\Middleware\TestMiddleware::class
];
则在路由中还可以以数组的这种形式来指定中间件
Route::get('/test',[
'middleware'=>'test',
'uses'=>function(){
echo route('ulist');
}
]);
连贯操作指定中间件
在kernel中路由方式注册中间件和上面一样,则在路由中还可以通过连贯操作的形式来指定中间件,如:
Route::get('/404', function () {
abort(404);
})->middleware('test');
关键字词:laravel,路由,中间件
上一篇:Laravel基础之路由
下一篇:Laravel基础之控制器