{!! Form::open(['action'=>['PostsController@update',$post->id],'method'=>'POST']) !!}
<div class="form-group">
{{Form::label('title', 'Title')}}
{{Form::text('title', $post->title,['class'=>'form-
control','placeholder'=>'Title'])}}
</div>
<div class="form-group">
{{Form::label('body', 'Body')}}
{{Form::textarea('body', $post->body,['id'=>'article
ckeditor','class'=>'form-control','placeholder'=>'Body Text'])}}
</div>
{{Form::hidden('_method','PUT')}}
{{Form::submit('Update',['class'=>'btn btn-success'])}}
{!! Form::close() !!}
我正在使用此{{ Form::hidden('_method','PUT') }}
来更新我的帖子,因为没有其他方法。有没有更好的方法?
这是我的控制器(后控制器(:
public function update(Request $request, $id)
{
$this->validate($request,[
'title' => 'required',
'body' => 'required'
]);
$post = Post::find($id);
$post->title = $request->title;
$post->body = $request->body;
$post->save();
return redirect('/posts')->with('success','Post Updated Sucessfully');
}
这是使用 UPDATE 表单的默认且正确的方法。您必须在表单方法中使用 POST 并将 PUT 用作表单的请求参数(隐藏(。
您在这里错过的是形式的CSRF令牌,它可以以多种方式使用,例如:
{!! Form::token() !!}
{!! Form::hidden('_token', Session::token()) !!}
{!! csrf_field() !!}
@csrf <!-- since Laravel 5.6 -->
同样,您可以将 PUT 用作:
@method('PUT')