【发布时间】:2020-03-26 10:08:04
【问题描述】:
我正在尝试为 Laravel 6 创建一个作曲家包,但我无法让我的主路由 / 覆盖基本 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']);
【问题讨论】:
-
包含在文档中,让他们不要为“/”定义自己的路由,或者为“/”指向您的控制器......并且您的包不应该定义基于闭包路线,如果你这样做,他们将无法缓存他们的路线
-
@lagbox 感谢关闭路线的提示。默认的 Laravel 安装有一个
/路由,所以我希望覆盖它,但如果我必须在安装说明中包含删除它,那么我会这样做。 -
这是他们的路线和他们的应用程序,默认情况下只是为了示例目的
-
@lagbox 它实际上是一个用于创建单页应用程序的包,因此除了将默认文件注释掉之外,他们永远不需要触及路由文件,但我明白你的意思。
标签: php laravel oop composer-php laravel-6