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

17

将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等。

我该怎么做才能解决上述错误? 能否有人帮助我呢?

4个回答

31
在Laravel 6中,认证控制器中的$redirectTo属性进行了更新,以便更轻松地在整个范围内进行更改。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';

3

在我的情况下:

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是包含身份验证的内容。

1
我遇到了相同的问题,发现在RouteServiceProvider类中常量不同,你会发现Home而不是HOME。我认为这个问题是由于LARAVEL引起的,因为我的项目是新的。
我的LARAVEL版本是7.7.0。

-1
在我的情况下,我已经将protected $redirectTo = RouteServiceProvider :: HOME;中的单词HOME更改为小写的home,就像这样protected $redirectTo = RouteServiceProvider :: home;,这导致了上面的错误,所以我只是把它再次放回大写,现在没问题了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接