[英]Update and delete — I can't update and delete data from database in Laravel framework
我正在使用表单提交请求以更新和删除数据库中的数据,但无法这样做。
我尝试使用其他方法,但无法解决此问题。 我正在为此项目使用Laravel 5.4.36。
控制器:
public function update(Request $request, $id)
{
Student::where('id', $id)->update(['first_name' => 'vks', 'last_name' => 'pok']);
}
public function destroy(Request $id)
{
$student=Student::find($id);
$student->delete();
}
路线:
Route::get('/student/about', 'BksController@about');
Route::get('/student/service', 'BksController@Services');
Route::get('create','BksController@create');
Route::post('create','StudentController@create');
Route::get('search','BksController@search');
Route::post('search','StudentController@show');
Route::get('/update','BksController@update');
Route::put('update','StudentController@update');
Route::get('/delete','BksController@delete');
Route::delete('/delete','StudentController@destroy');
Route::resource('student', 'StudentController');
Route::get('/home', 'HomeController@index')->name('home');
销毁形式的刀片模板:
@include('student.commonlayout')
<div class='col-md-6 col-md-offset-3'>
<h1>DeleteData</h1>
<hr>
<form method="post" action="{{url('delete')}}">
{{csrf_field()}}
<div class="form-group">
<input type="text" name="first_name" class="form-control" placeholder="Enter your Id" />
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary"/>
</div>
</form>
</div>
更新表单的刀片模板:
@include('student.commonlayout')
<div class='col-md-6 col-md-offset-3'>
<h1>update Data</h1>
<hr>
<form method="post" action="{{url('update')}}">
{{csrf_field()}}
<div class="form-group">
<input type="text" name="id" class="form-control" placeholder="Enter your id" />
</div>
<div class="form-group">
<input type="text" name="first_name" class="form-control" placeholder="Enter your Name" />
</div>
<div class="form-group">
<input type="text" name="last_name" class="form-control" placeholder="Enter last Name" />
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" />
</div>
</form>
</div>
更新时,出现以下错误:
RouteCollection.php第251行中的MethodNotAllowedHttpException
删除时,我收到类似的错误:
RouteCollection.php第251行中的MethodNotAllowedHttpException
在您的任何删除或更新路由中都没有看到POST方法。
Route::get('/update','BksController@update');
Route::put('update','StudentController@update');
Route::get('/delete','BksController@delete');
Route::delete('/delete','StudentController@destroy');
当您单击表单中的按钮时,它将执行HTTP发布。 因此,将您的路线更改为Route:post(...)
以进行相应匹配。
使用Route::resource(...)
将使用HTTP请求方法DELETE
进行destroy
操作,并使用PUT
进行update
操作来创建路由。 这意味着提交表单时必须使用这些方法。
不幸的是,HTML表单不支持PUT
或DELETE
。 这就是Laravel使用称为_method
的特殊隐藏输入的原因,该输入应包含正确的方法。 表单本身应该通过POST
发送。 这是您的更新表单的外观(省略字段和其他标记):
<form method="post" action="{{ url('update') }}">
@method('put')
{{ csrf_field() }}
<!-- Your fields here -->
</form>
指令@method('put')
将生成以下html <input type="hidden" name="_method" value="put">
。
您可以在官方文档中阅读有关此主题的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.