I’m working with Laravel 8 to develop an Online Forum. And I made this form for updating an answer of a user:
<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>
And here is the route for this:
Route::post('questions/{ans}/{que}' , [QuestionController::class, 'updateAnswer'])->name('update.answer');
And this is also the Method of 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,
]);
}
But now the problem is, whenever I submit the form in order to update answer, I get this as error:
Argument 2 passed to AppHttpControllersQuestionController::updateAnswer() must be an instance of AppModelsQuestion, string given, called in F:xampphtdocsgooyanetrootvendorlaravelframeworksrcIlluminateRoutingController.php on line 54
I don’t why I get this error, because as you can see I have passed $que->id
at Action to Question $que
as the 2nd parameter of udpateAnswer()
method.
So what is your idea about this? How can I solve this issue?
I would really appreciate if you share your idea or suggestion with me.
Thanks…
Advertisement
Answer
It is because your variable in the controller is called $anss
and in your route is called ans
Check this answer I have given in another topic.