如何从laravel 5中的包将中间件附加到现有的命名路由?

时间:2020-09-25 11:39:19

标签: laravel-5 laravel-routing laravel-middleware

我正在尝试扩展现有应用程序而不修改其源代码。 该应用程序具有名为wizard-add的命名路由。 有没有办法向现有路由注册\MyPackage\MyMiddleware? 我尝试通过Route::getRoutes()->getByName('wizard-add')->middleware(\MyPackage\MyMiddleware::class);附加它,但是由于包是在读取路由之前注册的,因此Route::getRoutes()返回一个空集合。

谢谢!

1 个答案:

答案 0 :(得分:0)

由于找不到解决方法,我扩展了应用程序的控制器,并将逻辑放入其中。

namespace MyPackage\Controllers;
use App\Controllers\WizardController;

class MyPackageWizardController extends WizardController { ... }

,然后使用我的服务提供商的register()方法:

$this->app->bind(WizardController::class, MyPackageWizardController::class);

因此,每次应用程序尝试实例化WizardController时,它都会实例化MyPackageWizardController。我不知道是否有任何缺点,但到目前为止,这对我来说一直很好。