Jor*_*cht 14 php package service-provider laravel-5 laravel-middleware
我正在为Laravel 5开发一个软件包.
我的软件包包含一个自定义中间件,我想将它添加到$routeMiddleware我的软件包服务提供程序中的Kernel类的数组中.
但我似乎找不到办法做到这一点.
我试图创建一个扩展Kernel类的自定义类,然后我可以将数组与我的数组合并.
但是一旦出了构造函数就不可能了.
在L4中你有App :: middleware,但L5中不再提供该功能.
任何解决过这个问题的人都可以帮我解决这个问题吗?
请告诉我,如果我的问题不够明确,那么我可以稍微澄清一下.
mit*_*dav 21
对于那些寻找更新答案的人,在Laravel 5.4中,您可以从服务提供商处拨打以下内容.
$this->app['router']->aliasMiddleware('my-package-middleware', \My\Package\Middleware::class);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用app()帮助程序,如下所示.
app('router')->aliasMiddleware('my-package-middleware', \My\Package\Middleware::class);
Run Code Online (Sandbox Code Playgroud)
Jor*_*cht 14
在您的包服务提供商中,您可以像这样访问路由器实例:
$this->app['router']
Run Code Online (Sandbox Code Playgroud)
接下来你可以像这样注册中间件:
$this->app['router']->middleware('middlewareName', 'your\namespace\MiddlewareClass');
Run Code Online (Sandbox Code Playgroud)
您将此代码放在服务提供商的注册方法中.
小智 9
关于Laravel 5.6
/*In your package service provider*/
public function boot()
{
/** @var Router $router */
$router = $this->app['router'];
$router->pushMiddlewareToGroup('web', MyPackage\Middleware\WebOne::class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11911 次 |
| 最近记录: |