我正在尝试扩展现有应用程序而不修改其源代码。
该应用程序具有名为wizard-add
的命名路由。
有没有办法向现有路由注册\MyPackage\MyMiddleware
?
我尝试通过Route::getRoutes()->getByName('wizard-add')->middleware(\MyPackage\MyMiddleware::class);
附加它,但是由于包是在读取路由之前注册的,因此Route::getRoutes()
返回一个空集合。
谢谢!
答案 0 :(得分:0)
由于找不到解决方法,我扩展了应用程序的控制器,并将逻辑放入其中。
namespace MyPackage\Controllers;
use App\Controllers\WizardController;
class MyPackageWizardController extends WizardController { ... }
,然后使用我的服务提供商的register()
方法:
$this->app->bind(WizardController::class, MyPackageWizardController::class);
因此,每次应用程序尝试实例化WizardController
时,它都会实例化MyPackageWizardController
。我不知道是否有任何缺点,但到目前为止,这对我来说一直很好。