如何使用Laravel5.1框架注册中间件

  介绍

这篇文章将为大家详细讲解有关如何使用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框架注册中间件