Vous souhaitez nous soutenir ? Devenez sponsor de l'association sur notre page Github
Forum

Problème de session...

d-stephane avatar
Publié le 25 novembre 2024
Par d-stephane

Bonjour,

Sur le site que je suis en train de dev j'ai un petit soucis de session. Le site en question est en 3 langues, j'ai donc un menu permettant de switcher entre les langues. Pour que cela soit fonctionnel j'ai du ajouter dans le bootstrap/app.php le code suivant (lignes 2 et 3) :

1->withMiddleware(function (Middleware $middleware) {
2 $middleware->append(StartSession::class);
3 $middleware->append(SetLocale::class);
4})

A cause de cette modif la validation des formulaires ne fonctionne qu'à moitié. Je veux dire par là que quand je valide un formulaire sans remplir les champs obligatoire, la validation stop le processus et renvoi vers la page du formulaire mais sans afficher les champs en erreur. Vu que les sessions entre en jeu pour l'affichage des erreurs je me suis dis que mon code ajouté dans bootstrap/app.php posais peut être un problème. Je l'ai mis en commentaire et là l'affichage des erreurs fonctionne mais plus le switch des langues... Une idée de comment régler ce petit problème ?

1 réponse
Antoine Benevaut, Il y a 1 semaine

Hello Stéphane,

Le middleware StartSession est inclu par défaut dans le group de middleware web (voir /vendor/laravel/framework/src/Illuminate/Foundation/Configuration/Middleware.php => getMiddlewareGroups()).

En l'ajoutant à nouveau cela doit certainement créer des effets de bord.

J'imagine que le middleware SetLocale est tiré d'un package que tu utilise ou d'un dév. que tu as fait, je te recommande de l'ajouter au group de middleware web.

1<?php
2 
3->withMiddleware(function (Middleware $middleware) {
4 $middleware
5 ...
6 ->web(
7 append: [
8 SetLocale::class,
9 ],
10 )

$middleware->append() ajoute ton middleware au group global, cela pourrait te poser des soucis si tu fais une API ou tout autre utilisation des controllers qui ne serait pas destiné à des utilisateurs via navigateur ou qui nécessiterai une session utilisateur.

Je te laisse essayer avec ce premier retour. Si cela ne fonctionne pas, j'aurais besoin de plus d'information sur ton middleware SetLocale::class (voir le code ou connaitre le package que tu as utilisé).

Bonne journée!