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 :

Ajouter un message après un redirect ? [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut Ajouter un message après un redirect ?
    Bonjour,

    J'ai suivi les différents tutoriels et souvent après le "delete" d'une entité on fait un simple RedirectResponse vers la route qui correspond à la liste des entités.
    Mais moi je voudrai simplement ajouter un message "Entité supprimé".

    J'ai cherché un peu sur le forum mais je trouve pas vraiment.

    Comment dois-je le faire ?

    - utiliser la session avec une variable ?
    - ajouter le champ message dans ma route (beurk...)
    - autre solution ?

    D'avance merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Il y a les Flash messages de la session qui servent exactement à ce cas de figure !

    Extrait de la doc (http://symfony.com/doc/2.0/book/controller.html) :
    Flash Messages

    You can also store small messages that will be stored on the user's session for exactly one additional request. This is useful when processing a form: you want to redirect and have a special message shown on the next request. These types of messages are called "flash" messages.

    For example, imagine you're processing a form submit:

    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
    public function updateAction()
    {
        $form = $this->createForm(...);
     
        $form->bindRequest($this->getRequest());
        if ($form->isValid()) {
            // do some sort of processing
     
            $this->get('session')->setFlash('notice', 'Your changes were saved!');
     
            return $this->redirect($this->generateUrl(...));
        }
     
        return $this->render(...);
    }
    After processing the request, the controller sets a notice flash message and then redirects. The name (notice) isn't significant - it's just what you're using to identify the type of the message.

    In the template of the next action, the following code could be used to render the notice message:

    Twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {% if app.session.hasFlash('notice') %}
            <div class="flash-notice">
                {{ app.session.flash('notice') }}
            </div>
        {% endif %}
    By design, flash messages are meant to live for exactly one request (they're "gone in a flash"). They're designed to be used across redirects exactly as you've done in this example.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Hmmm effectivement un bon RTFM dans la face

    En tout cas ca fonctionne tres bien !

    Philosophiquement je peux l'utiliser aussi si par exemple j'ai des erreurs "en plus" à gérer avec un formulaire ou c'est un peu mal codé ?

    Là pour le redirect c'est nickel, je me demande si je dois / peut aussi l'utiliser pour donner des informations dans un formulaire complexe ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Pour les erreurs de validation, il vaut mieux ajouter des FormError sur les champs du Form, même si tu le fais "à la main".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($something == 'cas d\'erreur')
    {
        $form->get('tonChamp')->addError(new FormError('Ton message d\'erreur'));
    }
    L'intérêt de ces Flash Messages, c'est que leur durée de vie est de 2 requêtes. C'est parfois un problème, mais parfait pour "franchir" le cap d'une redirection.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Merci beaucoup c'est nickel

    Comme quoi il n'y en qu'en mettant les mains dans un "vrai" code qui doit faire quelque chose qu'on se pose des questions !

    Encore merci pour le coup de main, tu m'as bien aidé.

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

Discussions similaires

  1. Message après redirection
    Par totot dans le forum Langage
    Réponses: 0
    Dernier message: 05/02/2014, 10h38
  2. Mise à jour de p:messages après redirection
    Par Babas007 dans le forum JSF
    Réponses: 0
    Dernier message: 02/10/2012, 19h49
  3. [OL-2007] alerte message après redirection
    Par statik dans le forum Outlook
    Réponses: 0
    Dernier message: 15/12/2010, 09h00
  4. Message après "copy"
    Par licorne dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2005, 09h34
  5. Ajouter une column apres une autre
    Par alex57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/09/2005, 13h53

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