[英]How to override an app route from a package in Laravel 6
I am attempting to create a composer package for Laravel 6 but I can not get my main route /
to override the default /
route included with the base Laravel installation.我正在尝试为 Laravel 6 创建一个 Composer 包,但我无法获取我的主路由/
以覆盖基本 Laravel 安装中包含的默认/
路由。
My package route does works when I comment out the base /
route provided by laravel so it is being registered by the package.当我注释掉 laravel 提供的 base /
route 时,我的包路由确实有效,因此它正在被包注册。
It doesn't make any different if I include my package's service provider before or after the RouteServiceProvider in the config/app.php
file.如果我在config/app.php
文件中的 RouteServiceProvider 之前或之后包含我的包的服务提供者,它不会有任何不同。
What am I missing here?我在这里缺少什么? How do I ensure my package routes have priority?我如何确保我的包裹路线有优先权?
Here are the relevant bits of code:以下是相关的代码位:
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,
The relevant section of LaravueSpaServiceProvider
LaravueSpaServiceProvider
的相关部分
public function boot()
{
$this->loadRoutesFrom(__DIR__.'/routes/web.php');
...
}
My Package's web.php
route file:我的包的web.php
路由文件:
<?php
Route::get('/', function(){
$initData = [
'appName' => config('app.name'),
'user' => Auth::user(),
];
return view('laravue-spa::app', compact('initData'));
})->middleware(['web']);
This may be late but for someone else:这可能晚了,但对于其他人:
You can ask the user to disable the auto package discovery in their composer.json
and then manually register the package's Service Provider before the RouteServiceProvider
in config/app.php
您可以要求用户在他们的composer.json
禁用自动包发现,然后在config/app.php
的RouteServiceProvider
之前手动注册包的服务提供者
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.