Transmission de $ id de href au contrôleur pour supprimer la ligne laravel 8 [duplicate]

Nov 23 2020

J'essaie de transmettre un identifiant à une fonction de mon contrôleur pour supprimer la ligne mais j'obtiens le code d'erreur:

Trop peu d'arguments pour la fonction 0 sont passés et exactement 1 nécessaire

Voici mon code html:

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

c'est ma route:

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

et voici mon code de contrôleur:

function deleteProduct($id) {

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

        return view('auth.admin');
}

Réponses

2 MaartenVeerman Nov 23 2020 at 04:30

Vous n'avez pas défini le iddans votre itinéraire:

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

De cette façon, l' routeappel saura où placer idet l'envoyer à la fonction.

Une autre façon est de laisser la route telle que vous l'avez, mais supprimez la $iddéfinition de la fonction de votre contrôleur et ajoutez Request $requestpour faire de l'objet laravel l'objet de requête. Ensuite, à l'intérieur de la fonction, accédez $idà l'objet de requête:

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