我可以使用Laravel 5 Middleware允许程序包覆盖应用程序路由吗?

哈里·波茨

我希望能够使用包中的路由覆盖app / Http / routes.php中定义的路由。

例如,在app / Http / routes.php中,我可能有以下内容:

Route::get('/search/{type?}',['as' => 'search','uses' => 'SearchController@search']);

我希望能够在/vendor/author/package/src/Http/routes.php中定义它:

Route::get('/search/properties', ['as' => 'properties','uses' => 'PropertyController@search']);

首先加载app / Http / routes.php文件,以便使用其中的路由,而不使用软件包。

在Laravel 4中,我将使用App :: before或App :: after来执行此操作,并为其赋予优先级。

在打包路线中类似:

App::before(function() {
    Route::get('/search/properties', ['as' => 'properties','uses' => 'PropertyController@search']);
});

我不知道如何在Laravel 5中实现这一目标。我发现了这个https://mattstauffer.co/blog/laravel-5.0-middleware-filter-style,但不知道如何使用它来完成我想要的。

编辑:Laravel 4这样做的方式将允许为每个路由设置此优先级,所以我不只是在应用程序之前加载所有包路由。

Lukasgeiter

您应该能够通过更改中的服务提供商的顺序来更改路由注册的顺序config/app.php

当前它可能看起来像这样:

'providers' => [
    // ...
    'App\Providers\RouteServiceProvider',
    // ...
    'Vendor\Package\PackageServiceProvider',
],

现在只需更改顺序,即可首先加载软件包:

'providers' => [
    // ...
    'Vendor\Package\PackageServiceProvider',  // register package routes first
    'App\Providers\RouteServiceProvider',
    // ...
],

要仅确定特定路由的优先级,您可以(ab)使用服务提供商register()方法。我不太喜欢方法,但是它行得通,我找不到更好的方法...

加载服务提供register()程序时,将调用每个提供程序方法。之后(以相同的顺序)boot()方法。这意味着与提供者的顺序无关,register()始终会在包中的boot()方法之前调用包中的方法RouteServiceProvider看起来可能像这样:

class PackageServiceProvider extends ServiceProvider {
    public function boot(){
        // register the regular package routes
    }

    public function register(){
        // register route "overrides"
        // for example like this: (obviously you could also load a file)
        app('router')->get('/search/properties', ['as' => 'properties','uses' => 'PropertyController@search']);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用Visual Studio在HTML5中创建Android应用程序吗?

来自分类Dev

我可以使用setup.py打包需要PyQt5的应用程序吗?

来自分类Dev

我可以使用批处理脚本运行Windows应用程序包吗?

来自分类Dev

我可以使用Laravel 5链接可变数量的查询范围吗

来自分类Dev

覆盖laravel 5中来自程序包的验证消息

来自分类Dev

我们可以使用Studio Studio组件来创建独立的HTML5 Web应用程序吗?

来自分类Dev

我可以使用xcode 5和ios 7 SDK开发ios 6应用程序吗

来自分类Dev

我们可以使用Studio Studio组件来创建独立的HTML5 Web应用程序吗?

来自分类Dev

可以使用.net 5预览创建WPF应用程序吗?

来自分类Dev

Windows窗体应用程序可以创建应用程序包吗?

来自分类Dev

Mvc 5应用程序可以直接使用IoC吗?

来自分类Dev

我可以使用 android studio 提供的默认包名启动 android 应用程序吗?

来自分类Dev

尝试在我的MVC 5应用程序中更改路由

来自分类Dev

我可以使用MVC,Razor和HTML5启动我的项目吗

来自分类Dev

xcode 5:我仍然可以为iOS 5创建应用程序吗?

来自分类Dev

我可以使用域名而不是路由器的公共IP地址远程访问我的应用程序吗?

来自分类Dev

iPhone应用程序是否可以使用iPhone 5或更高版本?

来自分类Dev

Ionic5 / Angular9 PWA应用程序中是否可以使用SignaturePad?

来自分类Dev

是否可以使用Django将我的PyQt5 GUI应用转换为Web应用?

来自分类Dev

我可以使用CSS或HTML5创建渐变线效果吗?

来自分类Dev

我可以使用iPhone 5(版本10.3.4)进行iOS调试吗?

来自分类Dev

我可以使用xcode5为UIView增加更多的高度吗?

来自分类Dev

我可以使用html5音频api创建歌曲吗

来自分类Dev

我可以使用全角(100%)页脚和80%的页眉吗?(CSS,HTML5)

来自分类Dev

我可以为我的应用程序要求iPhone 5S吗?

来自分类Dev

我可以在ASP5 vNext(beta8)应用程序中使用SignalR 2.2吗?

来自分类Dev

如何开发一个程序包以使用比我的应用程序更早版本的Guzzle?

来自分类Dev

我可以使用CoffeeScript编写我的Electron(Atom Shell)应用程序吗?

来自分类Dev

我可以使用其他帐户重新发布我的应用程序吗?

Related 相关文章

  1. 1

    我可以使用Visual Studio在HTML5中创建Android应用程序吗?

  2. 2

    我可以使用setup.py打包需要PyQt5的应用程序吗?

  3. 3

    我可以使用批处理脚本运行Windows应用程序包吗?

  4. 4

    我可以使用Laravel 5链接可变数量的查询范围吗

  5. 5

    覆盖laravel 5中来自程序包的验证消息

  6. 6

    我们可以使用Studio Studio组件来创建独立的HTML5 Web应用程序吗?

  7. 7

    我可以使用xcode 5和ios 7 SDK开发ios 6应用程序吗

  8. 8

    我们可以使用Studio Studio组件来创建独立的HTML5 Web应用程序吗?

  9. 9

    可以使用.net 5预览创建WPF应用程序吗?

  10. 10

    Windows窗体应用程序可以创建应用程序包吗?

  11. 11

    Mvc 5应用程序可以直接使用IoC吗?

  12. 12

    我可以使用 android studio 提供的默认包名启动 android 应用程序吗?

  13. 13

    尝试在我的MVC 5应用程序中更改路由

  14. 14

    我可以使用MVC,Razor和HTML5启动我的项目吗

  15. 15

    xcode 5:我仍然可以为iOS 5创建应用程序吗?

  16. 16

    我可以使用域名而不是路由器的公共IP地址远程访问我的应用程序吗?

  17. 17

    iPhone应用程序是否可以使用iPhone 5或更高版本?

  18. 18

    Ionic5 / Angular9 PWA应用程序中是否可以使用SignaturePad?

  19. 19

    是否可以使用Django将我的PyQt5 GUI应用转换为Web应用?

  20. 20

    我可以使用CSS或HTML5创建渐变线效果吗?

  21. 21

    我可以使用iPhone 5(版本10.3.4)进行iOS调试吗?

  22. 22

    我可以使用xcode5为UIView增加更多的高度吗?

  23. 23

    我可以使用html5音频api创建歌曲吗

  24. 24

    我可以使用全角(100%)页脚和80%的页眉吗?(CSS,HTML5)

  25. 25

    我可以为我的应用程序要求iPhone 5S吗?

  26. 26

    我可以在ASP5 vNext(beta8)应用程序中使用SignalR 2.2吗?

  27. 27

    如何开发一个程序包以使用比我的应用程序更早版本的Guzzle?

  28. 28

    我可以使用CoffeeScript编写我的Electron(Atom Shell)应用程序吗?

  29. 29

    我可以使用其他帐户重新发布我的应用程序吗?

热门标签

归档