我正在使用 Laravel 6 制作编辑表单。显然,这是一个普遍的问题,我在这里查找了如何解决它,我尝试以 5 种方式放置隐藏的 csrf 字段,并且每次运行时都出现相同的错误,所以 IDK 如果这些解决方案已被 Laravel 6 或我弃用我做错了什么。编辑刀片.php<form method="POST" action="/posts/{{$post->edit}}" enctype="multipart/form-data"> <input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <div class="form-group"> <label for="exampleFormControlInput1">Email address</label> <input type="email" name="email" value="{{ $post->email }}" class="form-control" id="exampleFormControlInput1"> </div> <div class="form-group"> <label for="exampleFormControlInput1">Name</label> <input type="text" name="name" value="{{ $post->name }}" class="form-control" id="exampleFormControlInput2" placeholder="Name"> </div> <label for="exampleFormControlInput1">Image</label> <div class="form-group row"> <div class="col-sm-2"> @if($post->image) <img class="img-fluid card-img-top" src="/images/{{ $post->image }}"/> @endif </div> <input type="file" name="image" value="{{ $post->image }}" id="exampleFormControlInput3"> </div> <button type="submit" class="btn btn-primary">Submit</button></form>PostsController.php public function edit(Post $post) { return view ('posts.edit', compact('post')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */我的路线,以防万一Route::resource('posts', 'PostsController');这些是我尝试编写 csrf 字段的其他方式。方式一:{{ csrf_field() }}<input type="hidden" name="_method" value="PUT">方式二:@csrf_field{{ method_field('PUT') }}方式3:@csrf{{ method_field('PATCH') }}方式四:@csrf@method('PUT')所有这些都导致我收到相同的错误消息。
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
尝试替换这个:
<form method="POST" action="/posts/{{$post->edit}}"
有了这个 :
<form method="POST" action="{{ route('posts.update', [$post->id]) }}"
我认为您正在尝试在没有任何参数的情况下在 /posts/ 路由上发布,因为 $post->edit 可能不会返回帖子的 id :)
- 1 回答
- 0 关注
- 243 浏览
添加回答
举报
0/150
提交
取消