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

 PHP Discussion :

Problème pour faire une redirection


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 15
    Par défaut Problème pour faire une redirection
    Bonjour,

    Ahlala des fois je me prends la tête pour faire des trucs tout simples avec Symfony.

    Je veux afficher un partial après la validation d'un formulaire affichant un message de confirmation à l'utilisateur. Puis au bout de quelques secondes effectuer une redirection côté serveur vers la page d'index du module.

    Bon j'arrive même pas à afficher mon partial, $this->setTemplate() ou $this->redirect() ne semblent pas être les bonnes fonctions pour ça

    Pour la redirection, est-ce que si je colle un header("refresh:5;url=mapage.php") dans le partial ça va marcher ou pas ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    $this->setTemplate('blabla') force la valeur du template à utiliser. Ici, ton action utilisera le template blablaSuccess.php.

    Dans ton template, tu utilises les fragments (partials) que tu veux grâce à include_partial().

    $this->redirect($monUrl) redirige le navigateur du client vers la page web pointée par $monUrl.

    Quant à la redirection avec header(), essaye et tu verras bien. NB : si quoi que ce soit a été posté sur le flux avent l'appel à header(), ça ne marchera pas, bien sûr (http://fr2.php.net/manual/fr/function.header.php)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 15
    Par défaut
    Merci d'avoir répondu

    Entre temps j'ai trouvé une solution qui me convient qu'à moitié. J'ai tout d'abord créé une vue confirmSuccess.php, puis dans le traitement du formulaire je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->redirect('module/confirm');
    Et enfin j'ai crée une action supplémentaire avec le code pour la redirection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      public function executeConfirm()
      {
        $this->setTemplate('confirm');
     
        header('refresh:3;url=./index');
      }
    J'ai l'impression de faire un truc pas très propre mais ça marche. Dommage que l'on ne puisse pas ajouter un timeout dans la fonction $this->redirect() de Symfony. Sa me paraît assez commun pourtant ce genre de redirection

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Pas vraiment. Je ne l'ai jamais utilisée depuis que je travaille sur le web, en tout cas.

    Quoi qu'il en soit, redirect() et header() ont des buts très différents et redirect() ne peut pas absolument pas fonctionner comme header() :

    - header() écrit des en-têtes sur le flux qui va être envoyé au navigateur. Il n'a aucune incidence sur le reste des traitements côté serveur. C'est le navigateur du client qui va faire la redirection une fois qu'on lui aura servi le flux.

    - redirect() interrompt les traitements en cours. La fontion lance une exception, symfony l'intercepte, la reconnait et lance la nouvelle action. redirect() n'écrit pas sur le flux, son intervention est tout à fait invisible pour le navigateur du client.

    Donc dans ton cas, passer par header() ou par du javascript me parait incontournable.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 15
    Par défaut
    Merci pour ces petites précisions utiles

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/08/2009, 13h51
  2. Réponses: 4
    Dernier message: 09/02/2006, 15h20
  3. probléme pour faire une copie de base de donnée
    Par nours33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 31/12/2005, 12h35
  4. problème pour faire une requête
    Par mitchbuck dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/11/2005, 22h48
  5. Réponses: 5
    Dernier message: 24/09/2005, 20h31

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