介绍
这篇文章将为大家详细讲解有关如何使用Laravel5.1框架注册中间件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
- <李>
<强> 1,在控制器中的方法中注册中间件强>
李>这种需求是最为常见,这个例子是给IndexController中索引的方法添加中间件。
路线::获得(& # 39;/& # 39;,,(& # 39;中间件# 39;=祝辞(& # 39;应用中间件\ \ Http \ EmailMiddleware& # 39;], & # 39;使用# 39;=祝辞& # 39;IndexController@index& # 39;]);
- <李>
<强> 2,在整个控制器中注册中间件强>
李>这种需求有的时候也会出现,如果给整个控制器中注册中间件,那么这个控制器中的所有方法都注册了该中间件。跟我一起来找到答案!
<>强控制器基类(控制器。php) 强>
首先来看一下控制器基类,可以看到控制器类继承了BaseController类,而BaseController的路径是照亮\路由\控制器,然后我们来看看Laravel的源码。
& lt; php ? namespace 应用\ Http \控制器; use 照亮\ \汽车\ DispatchesJobs基础; use 阐明\路由\ Controller as  BaseController; use 照亮\ \验证\ ValidatesRequests基础; use 阐明基础\ \ Auth \ \ AuthorizesRequests访问; abstract class  Controller extends  BaseController { use 才能;AuthorizesRequests, DispatchesJobs,, ValidatesRequests; }
<>强BaseController类强>
从源码中我们可以看到有一个属性为中间件,这个中间件属性就是我们要找的,所以只要在需要注册的控制器下使用这个属性即可完成注册。
protected middleware 美元;=,[],
& lt; php ? namespace 照亮\路由; use BadMethodCallException; use Symfony \组件\ HttpKernel \ \ NotFoundHttpException异常; abstract class 控制器 { ,/* * ,,*,从而middleware registered 提醒,控制器。 ,,* ,,*,@var 数组 ,,*/protected 才能;middleware 美元;=,[]; ,/* * ,,*,Register middleware 提醒,控制器。 ,,* ,,*,@param 数组字符串| | \ Closure 美元中间件 ,,*,@param array 选择美元 ,,*,@return \照亮\ \ ControllerMiddlewareOptions路由 ,,*/public 才能;function 中间件(中间件,美元,array options 美元;=,[]) {才能 ,,,foreach ((数组),middleware 美元;as m美元),{ ,,,,,这个→美元中间件[],=,( ,,,,,,,& # 39;中间件# 39;,=祝辞,m,美元 ,,,,,,,& # 39;选项# 39;,=祝辞,,选择美元, ,,,,,); ,,,} ,,,return new ControllerMiddlewareOptions(选项); ,,} ,/* * ,,*,Get 从而middleware assigned 用,控制器。 ,,* ,,*,@return 数组 ,,*/public 才能;function  getMiddleware () {才能 ,,,return $ this→中间件; ,,} ,/* * ,,*,Execute an action 提醒,控制器。 ,,* ,,*,@param string $方法 ,,*,@param array 美元参数 ,,*,@return \ HttpFoundation \ \ Symfony \组件响应 ,,*/public 才能;function  callAction(方法,美元,美元参数) {才能 ,,,return 中的call_user_func_array((这一美元,,方法),美元参数); ,,} ,/* * ,,*,Handle calls 用missing methods 提醒,控制器。 ,,* ,,*,@param array 美元参数 ,,*,@return 混合 ,,* ,,*,@throws \ Symfony \组件\ \ NotFoundHttpException HttpKernel \异常 ,,*/public 才能;function  missingMethod ($ parameters =, []) {才能 ,,,throw new NotFoundHttpException (& # 39; Controller  method not 发现# 39;公司); ,,} ,/* * ,,*,Handle calls 用missing methods 提醒,控制器。 ,,* ,,*,@param string $方法 ,,*,@param array 美元参数 ,,*,@return 混合 ,,* ,,*,@throws \ BadMethodCallException ,,*/public 才能;function  __call(方法,美元,美元参数) {才能 ,,,throw new BadMethodCallException (“Method [{$方法}],does not 存在!”); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何使用Laravel5.1框架注册中间件