Xóa Task
Lượt xem: 2550
Xóa Task
1. Thêm button xóa
Chúng ta đã để lại chữ “TODO” chú ý trong code nơi chúng ta sẽ thêm nút xóa vào. Vì vậy hãy thêm một nút xóa vào mỗi dòng của danh sách task trong task.blade.php view. Chúng ta sẽ tạo một form nhỏ chứa 1 button xóa cho mỗi task trong danh sách task. Khi button được clicked, một yêu cầu DELETE /task sẽ gửi tới dứng dụng:
<tr>
<!-- Task Name -->
<td class="table-text">
<div>{{ $task->name }} </div>
</td>
<!-- Delete Button -->
<td>
<form action="/task/{{ $task->id }}" method="POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button>Delete Task </button>
</form>
</td>
</tr>
2. Lưu ý về phương pháp giả mạo (method Spoofing
Lưu ý phương thức của form chứa button xóa được liệt kê là POST, mặc dù chúng ta đang ứng tới yêu cầu đang sử dụng một route Route::delete. Các form HTML chỉ cho phép các động từ HTTP là GET và POST, vì vậy chúng ta cần tạo một cách để giả mạo một yêu cầu xóa từ form.
<input type="hidden" name="_method" value="DELETE">
3. Xóa Task
Cuối cùng, hãy thêm logic vào route để thực sự xóa tác vụ đã có. Chúng ta có thể sử dụng phương thức Eloquent findOrFail để try xuất một model bở ID hoặc ném ra ngoại lệ 404 nếu model không tồn tại. Khi chúng ta truy xuất vào model, chúng ta sử dụng hàm delete để xóa bản ghi. Khi bạn khi được xóa, chúng ta sẽ chuyển người dùng trở lại / URL.
Route::delete('/task/{id}', function ($id) {
Task::findOrFail($id)->delete();
return redirect('/');
});