【问题标题】:Undefined class constant 'App\Providers\RouteServiceProvider::HOME'未定义的类常量“App\Providers\RouteServiceProvider::HOME”
【发布时间】:2020-05-05 02:41:18
【问题描述】:
将 laravel 5.8 升级到 laravel 6.x 后,出现以下错误:
Undefined class constant 'App\Providers\RouteServiceProvider::HOME'
在升级应用程序登录系统之前是自定义的。升级到 laravel 6.x 后,我想使用 laravel 默认身份验证。我通过 php artisan ui:auth 创建了身份验证,并从新的 laravel app/Http/Controllers/Auth 文件夹中复制了控制器,其中包含与身份验证相关的控制器,例如 - LoginController、RegisterController 等。
我应该怎么做才能解决上述错误?有人可以帮帮我吗?
【问题讨论】:
标签:
laravel
laravel-routing
laravel-6
laravel-authentication
laravel-upgrade
【解决方案1】:
在 Laravel 6 中,auth 控制器中的 $redirectTo 属性已更新,因此更容易全面更改。 Link to PR.
要修复错误,您可以将以下内容添加到您的 App\Providers\RouteServiceProvider.php 类中:
/**
* The path to the "home" route for your application.
*
* @var string
*/
public const HOME = '/home';
或在您的每个身份验证控制器中将$redirectTo 属性更新为您要使用的路由:
protected $redirectTo = RouteServiceProvider::HOME;
变成
protected $redirectTo = '/the-path-you-want-to-redirect-to';
【解决方案2】:
在我的情况下,我已将 HOMEin protected $redirectTo = RouteServiceProvider::HOME; 中的单词更改为小写 home 就像 protected $redirectTo = RouteServiceProvider::home; 导致我出现上述错误的原因,所以我再次将其改成大写,现在是好的!
【解决方案3】:
我遇到了同样的问题,我发现它不是同一个常数
在 RouteServiceProvider 类中,您会发现 Home 不是 HOME。我认为这个问题是 LARAVEL 出现的,因为我的项目是新项目。
我的 LARAVEL 版本是 7.7.0
【解决方案4】:
就我而言:
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
public const HOME = '/home';
只需添加这一行
public const HOME = '/home';
正如 Laravel 文档所说 https://laravel.com/docs/7.x/authentication#included-authenticating