Formation PUB030 : Laravel, 2019 Les messages de confirmation

32.1 Notification flash : variable de session qui est valide une seule fois


Si l'affichage d'un message d'erreur lorsqu'une validation échoue est essentiel, l'affichage d'un message qui indique que l'enregistrement a été réalisé avec succès l'est tout autant.

Il existe un paquet Laravel qui fournit un mécanisme pour permettre d'afficher un message de confirmation une seule fois. La prochaine fois qu'une vue contentant un tel message sera affichée, le message ne réapparaîtra pas.

Ce paquet s'appelle Easy flash notifications.

Installation

Pour installer Easy flash notifications :

  1. Console Vagrant SSH

    composer require laracasts/flash

    Ceci ajoutera la configuration suivante dans le fichier composer.json puis téléchargera les fichiers requis dans le dossier vendor.

    Fichier composer.json

    "require": {

        ...,

        ""laracasts/flash": "^3.0""

    },

  2. Dans le fichier config\app.php, ajoutez la référence suivante :
    Fichier config\app.php (PHP)

    'providers' => [

     

        ...

        /*

         * Application Service Providers...

         */

        ...,

        Laracasts\Flash\FlashServiceProvider::class,

    ],

Utilisation

Votre paquet est maintenant prêt à être utilisé.

Dans vos contrôleurs, avant d'effectuer une redirection, vous pourrez ajouter un message flash comme suit :

Contrôleur Laravel (PHP)

use Laracasts\Flash\Flash;

...

/**

 * Enregistre un nouveau produit.

 *

 * @param \Illuminate\Http\Request  $request

 * @return \Illuminate\Http\RedirectResponse

 */

public function store(Request $request) : RedirectResponse

{

    ...

    flash('Le produit a été enregistré avec succès !')->success();

    return redirect()->route('produits.index');

}

Il est d'usage d'afficher les messages dans le haut de la page, idéalement sous le titre h1.

À cet effet, le paquet met à votre disposition une vue partielle. Vous devez ajouter le code suivant dans votre vue ou, pour que les messages puissent être affichées surs toutes les pages, dans votre gabarit de base :

Fichier layouts\app.blade.php (Blade)

@include('flash::message')

<div class="contenupage">

    @yield('contenu')

</div>

Message flash de confirmation

Notez que ce paquet utilise les classes Bootstrap pour formater l'affichage.

Si vous utilisez également Bootstrap, n'oubliez pas de placer le @include() dans un <div class="container"> pour que le message s'affiche avec les marges requises.

Le code complet de la vue partielle est dans le fichier vendor\laracasts\flash\src\views\message.blade.php. Si vous désirez y apporter des modifications, copiez ce fichier dans votre dossier de vues partielles, modifiez-le selon vos besoins puis modifiez l'instruction @include() pour référer à votre vue partielle.

▼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