路由 pkl 不支持 DELETE 方法。支持的方法:GET、HEAD、POST

问题描述 投票:0回答:1

我想创建一个函数,用于删除我创建的表中的一行数据。当我想向表中添加数据时,收到错误“路由 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>
html laravel laravel-blade
1个回答
0
投票

问题出在您的控制器上。您正在

\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');
© www.soinside.com 2019 - 2024. All rights reserved.