【发布时间】:2020-05-14 07:05:41
【问题描述】:
我不太确定这里发生了什么。我遵循了 spatie/laravel 权限的所有安装说明。我不断收到此错误,似乎无法在任何地方找到任何相关帮助。
错误信息
ErrorException:
Class '\App\Models\User' not found
at /home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php:183
at Facade\Ignition\ErrorPage\IgnitionWhoopsHandler->handle()
(/home/jlevan/cdb/vendor/filp/whoops/src/Whoops/Run.php:296)
at Whoops\Run->handleException()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:363)
at Illuminate\Foundation\Exceptions\Handler->renderExceptionWithWhoops()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:342)
at Illuminate\Foundation\Exceptions\Handler->renderExceptionContent()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:326)
at Illuminate\Foundation\Exceptions\Handler->convertExceptionToResponse()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:305)
at Illuminate\Foundation\Exceptions\Handler->prepareResponse()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:210)
at Illuminate\Foundation\Exceptions\Handler->render()
(/home/jlevan/cdb/app/Exceptions/Handler.php:53)
at App\Exceptions\Handler->render()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:119)
at Illuminate\Foundation\Bootstrap\HandleExceptions->renderHttpResponse()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:96)
at Illuminate\Foundation\Bootstrap\HandleExceptions->handleException()
(/home/jlevan/cdb/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:130)
at Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown()
auth.php
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
app\Models\User.php
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasRoles;
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
我不确定我错过了什么。我正在尝试使用 Spatie/laravel-permissions 并有一个简单的 - home.blade.php
@can('edit articles')
I can Edit!
@endcan
【问题讨论】:
-
不知道为什么您将用户模型移动到模型文件夹中,应用程序之前是否工作(登录/注册等),没有 Spatie 包?
-
没有。我已经阅读了另一篇关于将模型移动到模型目录的文章,其中包含一些相关信息。从技术上讲,目前我的 app\User.php 和 app\Models\User.php 都有正确的命名空间。无论我更改要使用的 auth.php 文件,它仍然会出错
-
是的,我有。我实际上在 app\User.php 和 app\Models\User.php 中有它,并且都有正确的命名空间
-
如果您将模型移动到新文件夹,请确保通过运行 composer dump-autoload 更新自动加载器
-
好吧,从技术上讲,我上面的评论是不正确的。是的,它会让我注册和登录,但是当我到达 home.blade.php 尝试执行 @can('edit article') 时,它会生成错误
标签: php laravel laravel-7 laravel-permission