我想创建一个函数,用于删除我创建的表中的一行数据。当我想向表中添加数据时,收到错误“路由 pkl 不支持 DELETE 方法”。支持的方法:GET、HEAD、POST。'
路线
Route::get('pkl', [FormController::class, 'pkl'])->middleware('isLogin');
Route::get('pkl2', [FormController::class, 'pkl2'])->middleware('isLogin');
Route::post('/pkl', [FormController::class, 'Up']); //post ke session
Route::post('/pkl2/form-kedua', [FormController::class, 'upFormKedua']);
Route::delete('/delete', 'FormController@deleteData')->name('data.delete');
控制器
public function deleteData(Request $request) {
$index = $request->input('index');
if (session('data_preview') && isset(session('data_preview')[$index])) {
session()->pull('data_preview.' . $index);
}
return redirect('/pkl');
}
查看
<table class="table table-striped mt-5 text-center" id="tabelData">
<tr>
<th scope="col">No</th>
<th scope="col">Nama </th>
<th scope="col">NIS/NIM </th>
<th scope="col">Kontak </th>
<th scope="col">Jenis Kelamin </th>
<th scope="col">Jurusan </th>
<th scope="col"></th>
</tr>
@if (session('data_preview'))
@php $nomorUrut = 1; @endphp
@foreach (session('data_preview') as $data)
<tr>
<td>{{ $nomorUrut }}</td>
<td>{{ $data['participant_name'] }}</td>
<td>{{ $data['nisnim'] }}</td>
<td>{{ $data['participant_contact'] }}</td>
<td>{{ $data['gender'] == '1' ? 'Laki-Laki' : 'Perempuan' }}</td>
<td>{{ $data['department'] }}</td>
<td>
<form action="/delete" method="post">
@csrf
@method('delete')
<input type="hidden" name="index" value="{{ $loop->index }}">
<button type="submit" class="border border-0"><i class="bi bi-trash" style="color: red"></i></button>
</form>
</td>
</tr>
@php $nomorUrut++; @endphp
@endforeach
@endif
</table>
问题出在您的控制器上。您正在
\pkl
方法中使用 redirect()
重定向到路线 deleteData
。你不能这样做。
而不是使用
name()
给出路线名称,然后使用 redirect()->route()
,如下所示,
控制器
public function deleteData(Request $request) {
$index = $request->input('index');
if (session('data_preview') && isset(session('data_preview')[$index])) {
session()->pull('data_preview.' . $index);
}
return redirect()->route('pkl');
}
路线
Route::get('pkl', [FormController::class, 'pkl'])->middleware('isLogin')->name('pkl');