未定义的变量$ user-> username(Laravel 5.7)

时间:2019-05-10 13:56:51

标签: php laravel

我无法从数据库中获取数据。出现错误:

  

ErrorException(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 }}

API

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

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

问题出在哪里,错误在哪里?

1 个答案:

答案 0 :(得分:0)

根据您的评论,您有以下路线:

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

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

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

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

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