存储数据时找不到 404 laravel 8

404 not found when storing data laravel 8

当我点击提交按钮时 returns 带有 404 页面的路由

这是blade

<form method="POST" action="{{ route('comment.store') }}" >
      @csrf
     <input type="text">
     <button type="submit">Add comment</button>
</form>

评论管理员:

    class CommentController extends Controller
{
    public function __construct() {
        $this->middleware('auth');
    }


    public function store(Request $request)
    {
        $film = Film::findOrFail($request->film_id);

        Comment::create([
            'comment' => $request->comment,
            'user_id' => Auth::id(),
            'post_id' => $film->id
        ]);
        return redirect()->route('showFilm', $film->id);
    }
}

这是我的 web.php:

Route::post('comment/store', [CommentController::class, 'store'])->name('comment.store');

你的findOrFail()方法return这个404错误,导致$request->film_id为空

发生这种情况是因为您正在使用 findOrFail() 方法,顾名思义,如果找到模型,它将 return 您的模型,否则,您会显示 404 页面。您应该在存储方法

中验证 film_id

编辑:在您的视图film_id中添加隐藏输入

           <form method="POST" action="{{ route('comment.store') }}" >
            @csrf
            <input type="hidden" name="film_id" value="{{ $film->id }}">
            <div class="form">
                <input type="text" placeholder="Add comment..">
                <button type="submit" class="submit">Add comment</button>
               </div>
           </form>

这样,film_id 将发送到您的控制器