这是我的html表单
<form class="form-horizontal" action="{{action('BlogController@update',[$blog->id]) }}" method="post">
<input name="method" type="hidden" value="patch"/>
<div class="form-group">
<input name="_token" type="hidden" value="{{ csrf_token() }}"/>
这是路线:
Route::patch('blog/{id}','BlogController@update');
控制器:
public function update(Request $request,$id){
$input = $request->all();
$blog =findOrFail($id);
Blog::update($input);
//var_dump($input);
return back();
}
你能告诉我问题在哪里吗?
答案 0 :(得分:3)
在您的代码中,您写了$blog = findOrFail($id);
来获取不正确的博客。你可以用
$blog = Blog::findOrFail($id);
现在你有博客,你需要更新博客。因此,更新代码应为
$blog->update($input);
要使此更新方法有效,您需要在Blog
模型中填写可填写的字段(要更新的字段)。
答案 1 :(得分:2)
您使用了错误的语法。做这样的事情让它发挥作用:
public function update(Request $request, $id)
{
Blog::where('id', $id)->update($request->all());
return back();
}
答案 2 :(得分:1)
提供您想要的名称博客:
Route::patch('blog/{id}','BlogController@update')->name('blog');
您的HTML代码
<form class="form-horizontal" action="{{route('blog', $blog->id)}}" method="post">
希望这能帮到你!!
答案 3 :(得分:0)
你有很多语法问题!
试试这种方式:
表格:
<form class="form-horizontal"
action="{{ route('blog.update', ['id' => $blog->id]) }}"
method="post">
{{ csrf_field() }}
<input name="_method" type="hidden" value="patch"/>
<!-- other inputs -->
</form>
路线:
Route::any('blog/{id}','BlogController@update')->name('blog.update');
控制器:
public function update(Request $request, $id){
$blog = Blog::findOrFail($id);
$blog->update([
'key' => 'value'
]);
// never use $request->all() because of security issues!
return back();
}
答案 4 :(得分:0)
<form class="form-horizontal" action="{{route('blog.update',[$blog->id]) }}" method="post">
{{csrf_field()}}
{{ method_field('PATCH') }}
你的路线
Route :: resource('blog','BlogController');
您的控制器
公共功能更新(Request $ request,$ id){
$blog =Blog::findOrFail($id);
$blog->database_fieldname1=$request->value1;
$blog->database_fieldname2=$request->value2;
$blog->database_fieldname3=$request->value3;
$blog->save();
return back();
}