Laravel 5 注册来自打包服务提供商的中间件

我目前正在为Laravel 5开发一个软件包。
我的软件包包含一个自定义中间件,我想将其添加到我的软件包服务提供商中的内核类数组中。
但我似乎找不到一种方法来做到这一点。$routeMiddleware

我试图创建一个扩展内核类的自定义类,然后我可以将数组与我的数组合并。
但是一旦脱离构造函数,它就不可能了。

在 L4 中,您有 App::中间件,但该函数在 L5 中不再可用。

任何解决这个问题的人可以帮助我解决这个问题吗?

如果我的问题不够清楚,请告诉我,这样我就可以稍微贬低一下。


答案 1

从Laravel 5.4(测试到5.8)开始,您将从服务提供商处调用以下线路。

$this->app['router']->aliasMiddleware('my-package-middleware', \My\Package\Middleware::class);

或者,您可以使用 app() 帮助程序,如下所示。

app('router')->aliasMiddleware('my-package-middleware', \My\Package\Middleware::class);

答案 2

这是关于拉拉维尔5.6

/*In your package service provider*/
public function boot()
{
    /** @var Router $router */
    $router = $this->app['router'];
    $router->pushMiddlewareToGroup('web', MyPackage\Middleware\WebOne::class);
}

推荐