Laravel的Php Artisan Route:当我们在控制器构造函数中实例化Auth :: user()时,列表将抛出异常
当你运行php artisan route:list时,Laravel实例化所有要检查的控制器,如果它们声明了一个中间件 - 它通常是通过调用middleware()方法在构造函数中完成的。此时,没有用户会话,因此Auth :: user()不会返回任何内容,我们将在尝试访问非对象上的name属性时收到错误。
示例:
class settingController extends Controller
{
protected $user;
public function __construct(ImageRepo $image)
{
$this->user = Auth::user();
$this->image = $image;
}
......
异常
C:\laragon\www\water2>php artisan route:list -v
[Symfony\Component\Debug\Exception\FatalErrorException]
Cannot use Illuminate\Contracts\Auth\Authenticatable as Authenticatable because the name is already in use
存储用户对象的更好方法是什么?
参考
I get the error in php artisan route:list command in laravel?
@ jedrzej.kurylo您不应该在构造函数中访问用户对象,请在操作方法中执行此操作。
但是怎么样?
答案 0 :(得分:1)
你绝对可以这样做:
public function __construct()
{
$this->user = Auth::user();
}
如果没有用户通过身份验证,您的$this->user
将等于null
。
在您的视图文件中,您只需检查:
@if($user)
<h1>Hello, {{ $user->name }}</h1>
@endif
您收到的错误似乎与尝试重新声明use
的某些Authenticatable
声明有关
检查您的用户模型和控制器是否存在此行的重复:
use Illuminate\Contracts\Auth\Authenticatable as Authenticatable