如何从Laravel 6中的包覆盖应用路由

时间:2019-12-01 17:19:27

标签: php laravel oop composer-php laravel-6

我正在尝试为Laravel 6创建一个composer软件包,但是我无法获取主路由/来覆盖基本Laravel安装中随附的默认/路由。

当我注释掉laravel提供的基本/路由以使它正在由软件包注册时,我的软件包路由确实起作用。

如果我在config/app.php文件中的RouteServiceProvider之前或之后包含包的服务提供程序,则没有什么不同。

我在这里想念什么?如何确保包裹路线优先?

以下是相关的代码位:

config/app.php

/*
 * Application Service Providers...
 */
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
Wheelmaker\LaravueSpa\LaravueSpaServiceProvider::class,  // MY SERVICE PROVIDER
App\Providers\RouteServiceProvider::class,

LaravueSpaServiceProvider

的相关部分
public function boot()
{
  $this->loadRoutesFrom(__DIR__.'/routes/web.php');
  ...
}

我的包裹的web.php路由文件:

<?php
Route::get('/', function(){
  $initData = [
    'appName' => config('app.name'),
    'user' => Auth::user(),
];
  return view('laravue-spa::app', compact('initData'));
})->middleware(['web']);

1 个答案:

答案 0 :(得分:0)

这可能要晚了,但对于其他人:

您可以要求用户在其composer.json中禁用自动软件包发现,然后在RouteServiceProvider中的config/app.php之前手动注册软件包的服务提供商