先谈一谈中间件的使用场景,比如路由转到一张页面,我们需要记录用户的cookie,或者检测用户的访问权限,这些操作如果全写在控制器里是不合适的,因为随着业务的扩充,控制器里的业务逻辑会越来越臃肿,难以维护,所以,不同的操作,我们分别写在各自的中间件里。我们使用artisan命令行来创建一个中间件。
php artisan make:middleware MyMiddleware
中间件的php文件都放在了目录\app\Http\Middleware下,大家应该注意到,中间件Middleware和控制器Controller文件夹都在Http文件夹下。
<?php namespace App\Http\Middleware; use Closure; class MyMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $next($request); } }
这里我们只改动handle函数来举例中间件的使用
public function handle($request, Closure $next) { echo ‘MyMiddleware is running!‘; return $next($request); }
中间件不注册是不能使用的,注册方式有多种。
第一种,Kernel.php中注册
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\MyMiddleware::class, ];
然后直接在控制器里写
class MyController extends Controller { public function index() { $this->middleware(‘MyMiddleware‘); return View(‘welcome‘); } public function hello() { //$articles = DB::select(‘select * from posts‘); //$articles=MyModel::all(); //$articles=MyModel::where(‘id‘,‘<‘,5)->get(); $articles=MyModel::find(1)->get(); return View(‘myview‘,[‘d1‘=>$articles]); } }
原文:http://www.cnblogs.com/sweng/p/6389408.html