Übergabe von $ id von href an den Controller zum Löschen der Zeilen-Laravel 8 [Duplikat]
Ich versuche, eine ID an eine Funktion in meinem Controller zu übergeben, um die Zeile zu löschen, erhalte jedoch den Fehlercode:
Zu wenige Argumente für Funktion 0 wurden übergeben und genau 1 benötigt
Hier ist mein HTML-Code:
<a href="{{ route('undo', $id) }}">Undo</a>
Das ist meine Route:
Route::get('/admin', [ProductController::class, 'deleteProduct']) -> name('undo');
und das ist mein Controller-Code:
function deleteProduct($id) {
DB::table('products') -> where('id', '=', $id) -> delete();
return view('auth.admin');
}
Antworten
Sie haben das id
in Ihrer Route nicht definiert :
Route::get('/admin/{id}', [ProductController::class, 'deleteProduct']) -> name('undo');
Auf diese Weise route
weiß der Anruf, wo er das ablegen soll, id
und sendet es an die Funktion.
Eine andere Möglichkeit besteht darin, die Route so zu belassen, wie Sie sie haben, aber die $id
aus Ihrer Controller-Funktionsdefinition zu entfernen und hinzuzufügen Request $request
, um das Laravel-Objekt zum Anforderungsobjekt zu machen. Als innerhalb der Funktion Zugriff auf das $id
von der Anfrage Objekt:
$id = $request->input('id');