【发布时间】:2019-11-09 22:03:02
【问题描述】:
我正在为求职面试做“带回家的作业”。虽然我在 Web 开发方面有一些经验,但这不是我的强项。我正在尝试使用 HTML DELETE 按钮删除 SQLite 表中的一行。我正在使用 Laravel-php 框架。
我在 google 和 stack Overflow 上尝试了不同的解决方案,但似乎都没有解决问题。我在Laracasts video
之后模仿了我的方法刀片似乎传递了正确的信息(来自 $contact->id 的 $id)并且控制器似乎正在接收。但是与该 ID 关联的给定联系人并未被删除。
来自刀片:
<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');
}
从路线:
Route::delete('/delete', [
'uses'=>'ContactController@delete',
'as'=>'contacts.delete'
]);
【问题讨论】:
-
很抱歉 HTML 代码中的缩进凌乱,stackoverflow 让我缩进了 >= 4 行,这让一切都失败了。
-
您的模型是否使用软删除?
-
不使用软删除。
-
如果您想查看问题,我建议对您的问题进行编辑。我相信这将使代码更易于阅读。 stackoverflow.com/review/suggested-edits/23388383
-
您需要将
route更改为:Route::delete('/delete/{id}', [ 'uses'=>'ContactController@delete', 'as'=>'contacts.delete' ]);建议使用action="{{ route('contacts.delete', [$contact->id]) }}"之类的表单操作,而不是action="/delete/{{ $contact->id }}"