Sur un des projets Laravel (version 8) sur lequel je travaille actuellement, j’ai été confronté à un problème récemment : les messages flash avec une redirection ne s’affichaient plus. En débuguant mon code PHP, je me suis aperçu que les variables de session ne persistaient pas après la redirection.
Ci-dessous un exemple de redirection avec un message flash d’erreur qui ne fonctionnait plus. Ici l’utilisateur n’a pas saisi correctement son mot de passe.
if (!(Hash::check($request->get('current-password'), Auth::user()->password))) {
// The passwords matches
return redirect()->back()->with("error","Le mot de passe actuel n'a pas été correctement saisi, réessayez.");
}
Une solution pour rétablir la persistance des variables de session après une redirection
J’ai trouvé la solution à mon problème sur le Forum Laracasts dans un post intitulé « Session variables not saving / persisting after redirect ».
Configuration côté middleware
- Allez dans le fichier app/kernal.php
- Ajoutez \Illuminate\Session\Middleware\StartSession::class, dans le tableau protected $middleware.
- Supprimez le de protected $middlewareGroups si il existe.
C’est ce dernier point qui m’a permis de résoudre mon problème et de pouvoir à nouveau retourner un message flash après une redirection.