未定义 class 常量 'App\Providers\RouteServiceProvider::HOME'

Undefined class constant 'App\Providers\RouteServiceProvider::HOME'

将 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 文件夹中复制了控制器,其中包含与身份验证相关的控制器,例如 - LoginControllerRegisterController

我应该怎么做才能解决上述错误?请有人帮助我吗?

在 Laravel 6 中,auth 控制器中的 $redirectTo 属性 已更新,因此更容易全面更改。 Link to PR.

要修复错误,您可以将以下内容添加到 App\Providers\RouteServiceProvider.php class:

/**
 * 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';

在我的例子中,我已经将 protected $redirectTo = RouteServiceProvider::HOME; 中的单词 HOME 更改为小写 home 就像 protected $redirectTo = RouteServiceProvider::home; 导致我出现上述错误的原因,所以我'我们只是把它重新变成大写,现在可以了!

我遇到了同样的问题,我发现它不是同一个常量 在 RouteServiceProvider class 中,你会发现 Home 不是 HOME。我认为 LARAVEL 这个问题是因为我的项目是新项目。

我的LARAVEL版本是7.7.0

就我而言:

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