我正在做“带回家的工作”以进行面试。虽然我有一些Web开发方面的经验,但这不是我的专长。我正在尝试使用HTML DELETE按钮删除SQLite表中的一行。我正在使用Laravel-php框架。
我在Google和Stack Overflow上尝试了不同的解决方案,但似乎没有一个解决问题。我以此Laracasts video
为模型刀片似乎正在传递正确的信息(来自$ contact-> id的$ id)并且控制器似乎正在接收。但是与ID相关联的给定联系人不会被删除。
刀锋:
null
从控制器:
<div class="col-md-6">
<table class="table table-striped table-hover">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
</tr>
@foreach($contacts as $contact)
<tr>
<td> {{$contact->f_name}} </td>
<td> {{$contact->l_name}} </td>
<td> {{$contact->address}} </td>
<td>
<form method="POST" action="/delete/{{ $contact->id }}">
@method('DELETE')
@csrf
<div class="field">
<div class="control">
<button type="submit" class="button">Delete Contact</button>
</div>
</div>
</form>
</td>
</tr>
@endforeach
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
从路线:
public function delete($id) {
Contact::find($id)->delete();
return view('index');
}
答案 0 :(得分:0)
您没有在删除方法上获得ID,需要像
一样将其包含在url中Route::delete('/delete/{id}', [
'uses'=>'ContactController@delete',
'as'=>'contacts.delete'
]);
在这种情况下,您无需更改删除方法。
您还可以在不更改删除路径的情况下从请求对象中检索ID,在这种情况下,您需要将ID作为隐藏输入包括在视图中,并且Delete方法将如下所示
public function delete(Request $request) {
Contact::find($request->id)->delete();
return view('index');
}