Formation PUB030 : Laravel, 2019 La suppression

30.1 Route et formulaire pour la suppression


Pour supprimer un enregistrement, il est possible mais non obligatoire de créer une vue qui affiche les détails de l'enregistrement. Voici deux approches qu'on retrouve souvent :

  • Dans la liste de produits, on clique sur le bouton de suppression d'un produit. L'application affiche une vue qui présente les détails du produit et, au bas de la vue, l'usager peut cliquer sur un bouton de confirmation de suppression.
    ou
  • Dans la liste de produits, on clique sur le bouton de suppression d'un produit. Un popup demande de confirmer la suppression.

Ce qu'il y a de commun entre ces deux approches, c'est qu'on passe par un bouton de suppression (et non un lien) et que l'application demande une confirmation avant de procéder à la suppression (l'utilisation d'AJAX est intéressante à ce niveau).

Route de suppression

Dans un cadre d'application MVC, tout part des routes. Il est donc naturel de commencer par créer la route qui permettra à l'application de supprimer l'enregistrement.

Ex :

Fichier routes\web.php

Route::delete('produits/{id}', [

    'as' => 'produits.destroy',

    'uses' => 'ProduitsController@destroy',

]);

Bouton de suppression

La suppression d'un enregistrement est une opération critique dans n'importe quelle application. Elle est généralement irréversible et les impacts d'une suppression effectuée par un pirate peuvent être graves.

C'est pourquoi Laravel met en place un mécanisme anti CSRF, tout comme il le fait lors de l'enregistrement d'un enregistrement.

Pour que la suppression puisse avoir lieu, on placera donc le bouton de suppression dans un formulaire avec protection anti CSRF. On indiquera également que l'appel utilise le verbe DELETE puisqu'on a défini la route avec ce verbe.

Ex :

Vue Laravel (Blade)

<form class="supprimer" method="POST" action="{{ route('produits.destroy', [ $produit->id ]) }}">

    @csrf

    @method('DELETE')

    ...

</form>

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre