首页 > 解决方案 > 未定义的变量 $user->username (Laravel 5.7)

问题描述

我无法从数据库中获取数据。收到错误:

错误异常 (E_ERROR)

未定义变量:用户

(查看:/Users/alex/Desktop/sites/tj/resources/views/user/submissions.blade.php)

控制器

public function __construct()
{
    $this->middleware('auth', ['except' => ['getById', 
        'getByUsername', 'submissions', 'comments', 'showSubmissions', 
        'showComments']]);
}

public function showSubmissions($username)
{
    $user = new UserResource(
        User::withTrashed()->where('username', $username)->firstOrFail(),
        true
    );

    $submissions = SubmissionResource::collection(
        Submission::whereUserId($user->id)
        ->withTrashed()
        ->orderBy('created_at', 'desc')
        ->simplePaginate(15)
    );

    return view('user.submissions', compact('user', 'submissions'));
}

查看

{{ $user->username }}

接口

Route::get('/user', 'UserController@getByUsername');

我需要获取有关用户 ( username) 的信息。

问题是什么,错误在哪里?

标签: phplaravel

解决方案


根据您的评论,您有这条路线:

Route::get('/submission', function () {
    return view('user.submissions');
});

当您加载此视图时,您不会将用户对象传递给它。然后当视图运行时,它试图访问一个不存在的变量。

要解决此问题,您需要将变量传递给正在加载的视图。例如,您可以执行以下操作:

Route::get('/submission', function () {
    return view('user.submissions', ['user' => auth()->user()]);
});

请注意,您可以根据用例更改获取用户实例的方式。我只是让经过身份验证的用户来演示原理。


推荐阅读