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 :

Session Flash sf2.0 > sf2.3 [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut Session Flash sf2.0 > sf2.3
    Bonjour,

    un autre petit soucis sur les sessions flashs (pas une mince à faire cette migration 2.0>2.3 ) alors au vus de la doc le changement ça à pas l'air compliqué.
    Auparavant j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Controller
    $session->setFlash('foo', 'bar');
    $session->getFlash('foo');
    // Vue
    {% if session.flashBag.get('foo') is defined %}
        {% if session.flashBag.get('foo') %}
            <div class="message">              
                    {{ session.getFlash('foo')|trans }}
                    {{ session.setFlash('foo', null) }}
            </div>
        {% endif %}
    {% endif %}
    Selon la doc ça se transforme ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // Controller
    $session->getFlashBag()->set('foo', 'bar');
    $session->getFlashBag()->get('foo');
    // Vue
    {% if session.flashBag.get('foo') is defined %}
        {% if session.flashBag.get('foo') %}
            {% for message in session.flashBag.get('foo') %}
                <div class="message">              
                    {{ message|trans }}
                </div>
            {% endfor %}
            session.flashBag.set('foo', null)
        {% endif %}
    {% endif %}
    mais alors là au niveau de mon contrôleur pas de soucis ma session flash est bien setter j'ai bien un array avec pour première valeur mon message mais au niveau de ma vue il ne m'affiche rien.
    Si ne met pas le foreach dans la vu ma div apparait mais avec marqué "Array".
    Je ne comprend pas pourquoi mon foreach n'affiche pas le message.
    Si quelqu'un voit quelque chose qui cloche...

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    ca ne marche pas comme ca? je vois pas l'interet de test pour chaque message flash si on doit l'afficher ou non ^^'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% for message in session.flashBag %}
        <div class="message">              
            {{ message|trans }}
        </div>
    {% endfor %}

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut
    Merci gototog a priori c'est le faite de vérifier que ma session était défini et avait une valeur. Je trouve ça tout de même un peu bizarre mais bon en tous cas ça fonctionne !

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Enfait l'affichage des messages flash c'est juste une boucle qui affiche tous les messages que tu envois a l'utilisateur, donc il est inutile de vérifier si chaque type de message existe avant de l'envoyer.

    ton code correspondait un peu (en caricaturant un poil)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $is=array(1,2,3,4,5)
    foreach($is as $i){
      if($i == 1){
      //action1
      }
      if($i == 2){
      //action2
      }
    //etc...
    }
    ce qui n'est pas spécialement propre

  5. #5
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut
    Oui je suis d'accord dans les faits mais j'avais fait ça car je n'ai pas tous le temps la session passé en paramètre de ma vue il me faut donc vérifier qu'elle existe j'ai rajouter un test pour voir si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% if session is defined %}
    et j'ai eu une réaction bizarre ça marchai bien sur le coup et le lendemain j'avais de nouveau mes messages flash qui déconné j'ai effacer le cache et ça a de nouveau marché... Y a quand même un truk pas très clair.

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

Discussions similaires

  1. [CakePHP] le session flash et l’authentification ne marche plus en production
    Par sekouzed dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 01/03/2015, 09h35
  2. variable Session(asp.net) et Cookie dans Flash
    Par SirTurbo dans le forum Flash
    Réponses: 4
    Dernier message: 29/05/2007, 04h27
  3. perte de session d'une bannière flash
    Par tekin dans le forum Flash
    Réponses: 1
    Dernier message: 08/02/2007, 20h17
  4. variable de session php<->flash
    Par christophe D dans le forum Flash
    Réponses: 1
    Dernier message: 18/08/2006, 14h47

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