如何在Laravel 5.6中选择外部供应商的订单?

问题描述 投票:4回答:3

我需要优先考虑项目路线与Laravel 5.6.12中的包裹路线。我已经读过一个解决方案可能是在调用包之前放置RouteServiceProvider调用。好吧,但默认情况下,当我使用composer安装依赖项时,所有外部ServiceProviders都会出现在RouteServiceProvider之前。

如果我检查我的bootstrap / cache / services.php生成:

23 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
24 => 'Laravel\\Tinker\\TinkerServiceProvider',
25 => 'Yajra\\DataTables\\DataTablesServiceProvider',
26 => 'Spatie\\Permission\\PermissionServiceProvider',
27 => 'Intervention\\Image\\ImageServiceProvider',
28 => 'Spatie\\MediaLibrary\\MediaLibraryServiceProvider',
29 => 'Spatie\\LaravelImageOptimizer\\ImageOptimizerServiceProvider',
30 => 'Laracasts\\Flash\\FlashServiceProvider',
31 => 'Jenssegers\\Agent\\AgentServiceProvider',
32 => 'DaveJamesMiller\\Breadcrumbs\\BreadcrumbsServiceProvider',
33 => 'JoseAragon\\MyPackage\\MyPackageServiceProvider',
34 => 'App\\Providers\\AppServiceProvider',
35 => 'App\\Providers\\AuthServiceProvider',
36 => 'App\\Providers\\EventServiceProvider',
37 => 'App\\Providers\\RouteServiceProvider',

RouteServiceProvider是最后一项。我不能把它放在包之前,因为在我的config / app.php中我没有生成的services.php中出现的ServiceProviders。

我需要把33 - > RouteServiceProvider放在33 - > MyPackageServiceProvider之前,它有很多路由。

你能帮助我吗?

我真的需要使用包路由,但是如果我需要在Laravel项目中创建一个新路由,请在包路由之前覆盖并优先处理这些路由。

你知道其他解决方案吗?

非常感谢!!!

php laravel laravel-5.6
3个回答
0
投票

在你的config/app.php

在您注册ServiceProvider的内部提供者数组中

$providers = [
//othere Services providers
 MyPackageServiceProvider::class,
  RouteServiceProvider::class
];

如果你运行php artisan optimize你的MyPackageServiceProvider将首先加载。


0
投票

您必须禁用第三方库的自动发现功能。为此,打开您的composer.json文件并添加您要禁用自动发现的库,如下所示

"extra": {
"laravel": {
    "dont-discover": [
        "vendor/library-name",
        "spatie/laravel-permission"
    ]
},

然后在laravel项目的config / app文件中以任意顺序手动设置库的自动发现。

这将解决在某些laravel默认提供程序之前具有自动生成提供程序的问题。您现在可以根据需要制作自己的提供商订单。


-1
投票

Illuminate\Foundation\Application::registerConfiguredProviders是一个问题。

解决方案:创建像Illuminate\CustomServices这样的命名空间并将ServiceProvider放在其中。


关于这个问题的更多背景:Illuminate\Foundation\Application::registerConfiguredProviders

  1. 从App配置提供程序数组创建一个集合;
  2. 将这个数组拆分为2个块​​[以Illuminate\开头的所有内容,其余部分];
  3. 在中间添加所有作曲家包服务提供者;

这将为您提供一个结果数组,其中所有ServiceProviders都按照您的排名进行排名,但是在所有以Illuminate\开头并且在第三方Party Composer ServiceProviders之后排序。

© www.soinside.com 2019 - 2024. All rights reserved.