繁体   English   中英

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

[英]Laravel 8: Argument 2 passed must be an instance of

我正在与 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,
        ]);
    }

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

传递给 App\Http\Controllers\QuestionController::updateAnswer() 的参数 2 必须是 App\Models\Question 的实例,给定字符串,在 F:\xampp\htdocs\gooyanet\root\vendor\laravel\framework\src 中调用\Illuminate\Routing\Controller.php 在第 54 行

我不知道为什么会出现此错误,因为如您所见,我已将$que->id at Action 传递给Question $que作为udpateAnswer()方法的第二个参数。

那么您对此有何想法? 我该如何解决这个问题?

如果您与我分享您的想法或建议,我将不胜感激。

谢谢...

这是因为您在 controller 中的变量称为$anss而在您的路线中称为ans

检查我在另一个主题中给出的这个答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM