我有錯誤說
Method App\Http\Controllers\Frontend\Atribut\AtributDashboardController::deleteData/{id} does not exist.
我這樣寫我的路線:
Route::group([
'prefix' => 'atribut',
'as' => 'atribut.'
], function () {
Route::group(['prefix' => 'tabHome', 'as' => 'tabHome.'], function () {
Route::get('', [AtributDashboardController::class, 'showTab'])->name('showTab');
Route::post('', [AtributDashboardController::class, 'addData'])->name('addData');
Route::get('', [AtributDashboardController::class, 'deleteData/{id}'])->name('deleteData');
});
在控制器中,我也已經寫了這些:
public function deleteData($id)
{
$this->inpData->deleteData($id);
return redirect('atribut/tabHome');
}
我$this->inpData->deleteData($id)從我的模型中呼叫:
public function deleteData($id)
{
DB::table('inp_datas')->where('id', $id)->delete();
}
這是按下洗掉按鈕時的按鈕動作:
@forelse ($dataDisplay as $data)
<tr>
<td>{{$data->name}}</td>
<td>
<a href="{{route('frontend.atribut.tabHome.deleteData', $data->id)}}" class="btn btn-sm btn-danger">Delete</a>
</td>
</tr>
@empty
@endforelse
為什么它說該方法不存在?
uj5u.com熱心網友回復:
正如您在檔案中看到的,第Route一個引數是 route name,并且在陣列中您必須指定類及其方法。
為什么它說該方法不存在?
在AttributDashboardController你有deleteData方法,而不是deleteData/{id}. 將deleteData/{id}是更可能是你的情況的路徑名。
因此,對于您的示例,洗掉路由應如下所示:
Route::get('deleteData/{id}', [AtributDashboardController::class, 'deleteData'])->name('deleteData');
或者:
Route::get('{id}', [AtributDashboardController::class, 'deleteData'])->name('deleteData');
Laravel 足夠聰明,可以將{id}引數deleteData作為$id引數傳遞給您的方法。
HTTP 洗掉
另外,如果你想在這條路由上進行洗掉,你可能會從閱讀可用的路由方法,尤其是HTTP DELETE 中受益。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335280.html
