Laravel 8:传递的参数2必须是的实例



我正在用Laravel 8开发一个在线论坛。我做了这个表单来更新一个用户的答案:

<form action="{{ route('update.answer', [$anss->id, $que->id]) }}" method="POST">
@csrf
<textarea name="answer" id="answer" class="form-control" rows="7">{{ $ans->answer }}</textarea>
@error('answer')
<div class="text-red-500 mt-2 text-sm">
{{ $message }}
</div>
@enderror
<button type="submit" class="text-blue-500 BJadidBold">ثبت تفییرات</button>
</form>

下面是这个的路径:

Route::post('questions/{ans}/{que}' , [QuestionController::class, 'updateAnswer'])->name('update.answer');

这也是QuestionController的方法:

public function updateAnswer(Answer $anss, Question $que)
{
$validate_data = Validator::make(request()->all(),[
'answer' => 'required'
])->validated();
$answer = Answer::findOrFail($anss);
$answer->update($validate_data);
return view('questions.question',[
'show' => $que,
]);
}

但现在的问题是,每当我提交表单以更新答案时,我都会得到这个错误:

参数2传递给AppHttpControllersQuestionController::updateAnswer()必须是AppModelsQuestion的一个实例,字符串给定,在F:xampphtdocsgooyanetrootvendorlaravelframeworksrcIlluminateRoutingController.php第54行

我不知道为什么我得到这个错误,因为正如你所看到的,我已经将$que->id传递给Question $que作为udpateAnswer()方法的第二个参数。

你对此有什么看法?如何解决这个问题?

如果你能和我分享你的想法或建议,我将非常感激。

谢谢…

这是因为控制器中的变量名为$anss,而路由中的变量名为ans

检查我在另一个题目中给出的答案。

最新更新