Przekazywanie $ id z href do kontrolera w celu usunięcia wiersza laravel 8 [duplicate]

Nov 23 2020

Próbuję przekazać identyfikator do funkcji w moim kontrolerze, aby usunąć wiersz, ale pojawia się kod błędu:

Za mało argumentów do przekazania funkcji 0 i potrzebny dokładnie 1

Oto mój kod HTML:

<a href="{{ route('undo', $id) }}">Undo</a>

to jest moja trasa:

Route::get('/admin', [ProductController::class, 'deleteProduct']) -> name('undo');

a to jest mój kod kontrolera:

function deleteProduct($id) {

        DB::table('products') -> where('id', '=', $id) -> delete();

        return view('auth.admin');
}

Odpowiedzi

2 MaartenVeerman Nov 23 2020 at 04:30

Nie zdefiniowałeś idw swojej trasie:

Route::get('/admin/{id}', [ProductController::class, 'deleteProduct']) -> name('undo');

W ten sposób routepołączenie będzie wiedziało, gdzie umieścić plik idi wyśle ​​go do funkcji.

Innym sposobem jest pozostawienie trasy taką, jaką masz, ale usunięcie $iddefinicji funkcji kontrolera i dodanie, Request $requestaby obiekt laravel stał się obiektem żądania. Następnie wewnątrz funkcji uzyskaj dostęp $idz obiektu żądania:

$id = $request->input('id');