php - Laravel 5.7:更新方法返回“无消息”
问题描述
我已经尝试了一切,但我无法弄清楚我的错误在哪里。
update() 方法不会更新任何内容,我只会返回“无消息”错误...
这是 web.php 中的路由:
Route::get('/user/edit/{id}', ['as' => 'users.edit', 'uses' => 'UserAdController@edit']);
Route::post('/user/update/{id}', ['as' => 'users.update', 'uses' =>'UserAdController@update']);
视图 users/edit.blade.php :
<div class="container">
<br>
<h3>Edit your ad</h3>
<br>
<form method="post" action="{{route('users.update', $ad->id)}}">
<input name="_method" type="hidden" value="PATCH">
{{ method_field('post') }}
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" id="title" value="{{$ad->title}}">
</div>
<div class="form-group">
<label for="title">Price</label>
<input type="text" name="price" class="form-control" id="title" value="{{$ad->price}}">
</div>
<div class="form-group">
<label for="content">Your content</label>
<textarea name="content" class="form-control" id="content" rows="3">{{$ad->content}}</textarea>
</div>
<div class="form-group">
<input type="submit" value="Update" class="btn btn-info">
</div>
</form>
</div>
@endsection
来自 UserAdController 的更新方法:
public function update($id, Request $request){
$request->validate([
'title'=>'required',
'price'=> 'required|integer',
'content' => 'required'
]);
$data = \App\Ad::find($id);
$data->title = $request->get('title');
$data->price = $request->get('price');
$data->content = $request->get('content');
$data->save();
return redirect()->back()->with('success', 'Data updated');
}
解决方案
我不是 laravel 开发者。我只是偶然发现了文档。您还应该将 csrf 字段添加到刀片
在edit.blade.php
中,在开始<form>
标签之后添加
{{csrf_field()}}
您的更新方法中的参数也没有很好地安排
它应该是
public function update(Request $request, $id) {
}
第二个参数($id
)来自您在web.php
文件中定义的路由
Route::post('/user/update/{id}', ['as' => 'users.update', 'uses' =>'UserAdController@update']);
哪里{id}
会换成原来的id
推荐阅读
- python - 在处理上述异常的过程中,又发生了一个异常。Python
- reactjs - 如何在 mapDispatchToProps 中为方法使用道具?
- php - DocuSign API 回调未发送到应用程序
- android - 如何在 android 中将 GDPR 同意传递给 Flurry?
- python - Python Regex:在某些条件下删除数字的替代方法
- linear-regression - lm和dynlm的区别
- rest - REST 客户端扩展未在 VSCode 中发送表单数据
- spring - Maven/Spring/MVC Web 应用程序 - 错误无法 TalendJob(第三方 Talend
- python - 如何正确执行 InstaPy?InstaPy 安装 - Nonebit win 错误
- r - 如何绑定两个具有不同列数的矩阵?