如何解决如何从laravel 5中的包将中间件附加到现有的命名路由?
我正在尝试扩展现有应用程序而不修改其源代码。
该应用程序具有名为wizard-add
的命名路由。
有没有办法向现有路由注册\MyPackage\MyMiddleware
?
我尝试通过Route::getRoutes()->getByName('wizard-add')->middleware(\MyPackage\MyMiddleware::class);
附加它,但是由于包是在读取路由之前注册的,因此Route::getRoutes()
返回一个空集合。
谢谢!
解决方法
由于找不到解决方法,我扩展了应用程序的控制器,并将逻辑放入其中。
namespace MyPackage\Controllers;
use App\Controllers\WizardController;
class MyPackageWizardController extends WizardController { ... }
,然后使用我的服务提供商的register()
方法:
$this->app->bind(WizardController::class,MyPackageWizardController::class);
因此,每次应用程序尝试实例化WizardController
时,它都会实例化MyPackageWizardController
。我不知道是否有任何缺点,但到目前为止,这对我来说一直很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。