Laravel 8: попытка получить имя свойства не-объекта после перенаправления обратно

Я создаю форум с Laravel 8, и на этом форуме пользователи могут редактировать свои ответы, которые они опубликовали на вопрос.

(как и StackOverflow)

Вот кнопка для доступа к клинку editquestion:

<form action="{{ route('edit.answer', $ans->id, $show->id) }}">
     <button type="submit" class="text-blue-500">Editing Answer</button>
</form>

А вот метод Контроллера для обновления ответов на вопрос:

public function updateAnswer(Answer $ans, Question $slug)
    {
        if($ans->ownedBy(auth()->user())){
            $validate_data = Validator::make(request()->all(),[
                'answer' => 'required'
            ])->validated();

            $ans->update($validate_data);

            return view('questions.question',[
                'show' => $slug
            ]);
        }
    }

Как видите, я передал два параметра: $ans в качестве идентификатора ответа и $id в качестве идентификатора вопроса.

И в конце я передал переменную $id в show для перенаправления обратно к колонке вопросов:

return view('questions.question',[
   'show' => $slug
]);

Так что он работает нормально и правильно обновляет ответ. Но проблема в том, что он показывает эту ошибку, когда возвращается на лезвие question:

ErrorException Попытка получить имя свойства не-объекта (View: question.blade.php)

И строка, о которой идет речь в этой ошибке, идет здесь:

<a href="{{ route('users.posts', $show->user->name) }}">{{ $show->user->name }}</a>

Однако раньше он работал нормально, без вывода ошибок. Значит, это означает, что переменная slug неправильно перешла на лезвие question!

Также вот маршрут web.php для этих двух лезвий:

Route::get('editquestion/{id}' , [QuestionController::class, 'editQuestion'])->name('edit.question');
    Route::post('editquestion/{id}' , [QuestionController::class, 'updateQuestion'])->name('update.question');
Route::get('questions/{slug}' , [QuestionController::class, 'showQuestion'])->name('show.question');

Итак, как я могу исправить эту проблему и правильно перенаправить пользователя обратно после процесса адаптации?

Я был бы очень признателен за любую идею или предложение от вас, ребята ...

Заранее спасибо.


person tejoslaeslio    schedule 13.03.2021    source источник
comment
Что вы пробовали для устранения проблемы?   -  person Nico Haase    schedule 14.03.2021
comment
Вы установили slug в качестве имени ключа маршрута в модели?   -  person MAY    schedule 14.03.2021
comment
Вы пытаетесь передать ярлык вызова переменной и пытаетесь получить имя свойства, и когда я читаю ваш код, я не вижу, где находится эта переменная. Это ... хорошо, вы передаете экземпляр Question в параметрах функции, но ... это не означает, что вы можете читать эту переменную в вашем представлении, потому что экземпляр является ссылочным классом в php, но не самим объектом. Вы можете передать объект, который возвращает значение Вопрос. Вы просто передаете идентификатор   -  person gaidyjg    schedule 14.03.2021


Ответы (1)


Убедитесь, что $ slug является объектом вопроса, прежде чем привязывать его к представлению вопроса, потому что проблема в том, что объект не получает

person Prospero    schedule 13.03.2021