我需要优先考虑项目路线与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项目中创建一个新路由,请在包路由之前覆盖并优先处理这些路由。
你知道其他解决方案吗?
非常感谢!!!
在你的config/app.php
在您注册ServiceProvider
的内部提供者数组中
$providers = [
//othere Services providers
MyPackageServiceProvider::class,
RouteServiceProvider::class
];
如果你运行php artisan optimize
你的MyPackageServiceProvider
将首先加载。
您必须禁用第三方库的自动发现功能。为此,打开您的composer.json文件并添加您要禁用自动发现的库,如下所示
"extra": {
"laravel": {
"dont-discover": [
"vendor/library-name",
"spatie/laravel-permission"
]
},
然后在laravel项目的config / app文件中以任意顺序手动设置库的自动发现。
这将解决在某些laravel默认提供程序之前具有自动生成提供程序的问题。您现在可以根据需要制作自己的提供商订单。
Illuminate\Foundation\Application::registerConfiguredProviders
是一个问题。
解决方案:创建像Illuminate\CustomServices
这样的命名空间并将ServiceProvider放在其中。
关于这个问题的更多背景:Illuminate\Foundation\Application::registerConfiguredProviders
Illuminate\
开头的所有内容,其余部分];这将为您提供一个结果数组,其中所有ServiceProviders都按照您的排名进行排名,但是在所有以Illuminate\
开头并且在第三方Party Composer ServiceProviders之后排序。