IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

problème variable session dans twig [2.x]


Sujet :

Symfony PHP

  1. #1
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut problème variable session dans twig
    Bonjour,

    Je rencontre un problème d'accès aux variables de session dans mes twig

    Je suis en version 2.3

    par exe dans mon controlleur je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $session = new Session();
            $session->start();
    $session->getFlashBag()->add('notice', "Votre url n'est pas valide");
    return $this->render('SimsuPasswordModifyBundle:Default:erreur.html.twig');
    et dans mon twig:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ dump(app.session) }}
    j'obtiens : NULL

    J'ai modifier mon php.ini comme préconisé et mis dans mon config.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        session:
            # handler_id set to null will use default session handler from php.ini
            handler_id:  ~
    J'ai vidé le cage etc... rien à faire.

    Si je fais un var_dump($session); dans mon controlleur j'obtiens des résultats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    object(Symfony\Component\HttpFoundation\Session\Session)#262 (3) { ["storage":protected]=> object(Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage)#263 (5) { ["bags":protected]=> array(2) { ["attributes"]=> object(Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag)#267 (3) { ["name":"Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag":private]=> string(10) "attributes" ["storageKey":"Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag":private]=> string(15) "_sf2_attributes" ["attributes":protected]=> &array(0) { } } ["flashes"]=> object(Symfony\Component\HttpFoundation\Session\Flash\FlashBag)#268 (3) { ["name":"Symfony\Component\HttpFoundation\Session\Flash\FlashBag":private]=> string(7) "flashes" ["flashes":"Symfony\Component\HttpFoundation\Session\Flash\FlashBag":private]=> &array(1) { ["notice"]=> array(5) { [0]=> string(26) "Votre url n'est pas valide" [1]=> string(26) "Votre url n'est pas valide" [2]=> string(26) "Votre url n'est pas valide" [3]=> string(26) "Votre url n'est pas valide" [4]=> string(26) "Votre url n'est pas valide" } } ["storageKey":"Symfony\Component\HttpFoundation\Session\Flash\FlashBag":private]=> string(12) "_sf2_flashes" } } ["started":protected]=> bool(true) ["closed":protected]=> bool(false) ["saveHandler":protected]=> object(Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy)#265 (4) { ["handler":protected]=> object(SessionHandler)#266 (0) { } ["wrapper":protected]=> bool(true) ["active":protected]=> bool(true) ["saveHandlerName":protected]=> string(4) "user" } ["metadataBag":protected]=> object(Symfony\Component\HttpFoundation\Session\Storage\MetadataBag)#264 (5) { ["name":"Symfony\Component\HttpFoundation\Session\Storage\MetadataBag":private]=> string(10) "__metadata" ["storageKey":"Symfony\Component\HttpFoundation\Session\Storage\MetadataBag":private]=> string(9) "_sf2_meta" ["meta":protected]=> &array(3) { ["u"]=> int(1412151405) ["c"]=> int(1412150964) ["l"]=> string(1) "0" } ["lastUsed":"Symfony\Component\HttpFoundation\Session\Storage\MetadataBag":private]=> int(1412151285) ["updateThreshold":"Symfony\Component\HttpFoundation\Session\Storage\MetadataBag":private]=> int(0) } } ["flashName":"Symfony\Component\HttpFoundation\Session\Session":private]=> string(7) "flashes" ["attributeName":"Symfony\Component\HttpFoundation\Session\Session":private]=> string(10) "attributes" }
    une idée?

    j'ai testé de mettre mon appli sur un autre serveur au cas ou pour voir et le résultat est le même
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    J'avoue que je n'ai jamais utilisé moi-même le [codeinline=twig]{{app.session}}[codeinline]
    Je ne peux que te conseiller de faire un peu plus de tests...

    J'ai mis les liens par ordre de pertinence.
    Vérifier les bases.
    Vérifier les méthodes qui semble fonctionner pour les autres.
    Les hacks pour ajouter des variables globales // vérifier comment et déclarer app.session

    Cordialement,
    Patrick Kolodziejczyk.

    Source :
    http://symfony.com/fr/doc/current/bo...messages-flash
    http://alexandre.clain.info/twig-les...s/#app-session
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Salut, merci pour ta réponse.

    les trois premiers liens je les avaient déjà explorer, le dernier aurait pu être intéressant mais ne me donne pas plus de résultat
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    En dernière recours, tu peux ajouter le paramètre dans le render.
    Personnellement, c'est ce que j'avais fait pour un paramètre que j'utilise de manière systématique dans mes pages. Via un Controlleur spécifique que j'étends par la suite.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    mouai je vois l'idée mais ça ne me satisfait pas trop trop ça mais je retiens l'idée en attendant
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    $session = new Session();
    $session->start();
    $session->getFlashBag()->add('notice', "Votre url n'est pas valide");
    return $this->render('SimsuPasswordModifyBundleefault:erreur.html.twig');
    Il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->get('session')->getFlashBag()->add('notice', "Votre url n'est pas valide");
    return $this->render('SimsuPasswordModifyBundle:Default:erreur.html.twig');

  7. #7
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Salut

    oui mais non j'avais aussi essayé au départ ça

    $this->get('session')->getFlashBag()->add

    mais le résultat est identique
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  8. #8
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello,

    Dans tous les cas, il faut que tu récupères le service session du container et pas que tu en instancies un nouveau.

    Comme ça peut-être ? Je pense que tu n'es pas bien loin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->get('session')->getFlashBag()->set('notice', "Votre url n'est pas valide");

  9. #9
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Merci pour ta réponse mais même résultat. Ce qui est troublant c'est que je ne récupère aucune données de session, le app.session devrait me retourner des données au delà même du flashbag... je pense que c'est mon instance même de symfony qui foire car j'en ai d'autre sur le même serveur en 2.3 qui tournent sans aucun souci et récupère leur variable de session...
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  10. #10
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Recherche peut-être ailleurs dans ton projet justement si tu n'as pas fait un nouvel objet Session dégueulasse qui vient écraser l'original.
    Assure toi que ton service session pointe bien sur les bonnes classes, que tu n'as pas surchargé le service accidentellement.
    Tu utilises des classes custom ou tu étends essentiellement des classes fournies pas Symfony ?

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    tu peux aussi essayer de mettre la session en auto_start au niveau de la configuration de sf2 ?

    t'as modifié quoi dans la config de php ?

    t'as pas un conflit avec les class loader (si t'as plusieurs projet sur la meme machine) ?

  12. #12
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    non j'étends les class de symfony, mais on est deux à bosser dessus via git...

    le truc étrange c'est que l'autre développeur n'a pas le souci
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  13. #13
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Jette un oeil aux commentaires qu'il y a sur le constructeur de la classe NativeSessionStorage : ça peut peut-être te mettre sur une piste concernant la config php.

    Si l'autre développeur n'a pas le problème et que vous avez les mêmes fichiers de config (non versionnés ... type parameters.yml etc.), ça ne sert plus de chercher dans la partie code. Y a des chances pour que ce soit l'environnement qui coince.

  14. #14
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    merci à tous pour vos réponses, en faite c'était bien lié à un problème de différences entre nos deux instances. J'ai récupéré l'instance de mon collègue en directe (sans passer par git) et là tout fonctionne

    le problème maintenant va être de réintégrer le tout das git mais c'est une autre histoire ça...
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passer variable session dans une requete
    Par mghari11 dans le forum JDBC
    Réponses: 1
    Dernier message: 18/06/2008, 23h18
  2. Appel variable session dans une class
    Par safisafi dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/04/2008, 10h59
  3. recuperer une variable session dans un SQLDataSource
    Par intissar_g dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/05/2007, 13h29
  4. variable session dans une requête
    Par foxofx dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 22h26
  5. Problème de session dans <html:checkbox
    Par don'de dans le forum Struts 1
    Réponses: 15
    Dernier message: 16/04/2007, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo