Неопределенная переменная $ user-> username (Laravel 5.7) - PullRequest
0 голосов
/ 10 мая 2019

Я не могу получить данные из базы данных. Получение ошибки:

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'));
}

View

{{ $user->username }}

API

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

Мне нужно получить информацию о пользователе (username).

В чем проблема и где ошибка?

1 Ответ

0 голосов
/ 10 мая 2019

На основании вашего комментария у вас есть этот маршрут:

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

Когда вы загружаете это представление, вы не передаете ему пользовательский объект.Затем, когда представление работает, оно пытается получить доступ к переменной, которая не существует.

Чтобы исправить это, вам нужно передать переменную в загружаемое представление.Например, вы можете сделать что-то вроде этого:

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

Обратите внимание, что вы можете изменить способ получения пользовательского экземпляра в зависимости от вашего варианта использования.Я просто заставляю аутентифицированного пользователя демонстрировать принцип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...