Übergabe von $ id von href an den Controller zum Löschen der Zeilen-Laravel 8 [Duplikat]

Nov 23 2020

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

2 MaartenVeerman Nov 23 2020 at 04:30

Sie haben das idin Ihrer Route nicht definiert :

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

Auf diese Weise routeweiß der Anruf, wo er das ablegen soll, idund sendet es an die Funktion.

Eine andere Möglichkeit besteht darin, die Route so zu belassen, wie Sie sie haben, aber die $idaus 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 $idvon der Anfrage Objekt:

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