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

Zend Framework PHP Discussion :

Delai sur une redirection


Sujet :

Zend Framework PHP

  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut Delai sur une redirection
    Bonjours,

    Je pense que la majorité d'entre vous connaisse cette petite fonction de redirection fort bien pratique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->_redirect('/');
    Ma question est ma suivante : Peut on ajouter un delai avant la redirection ?

    Merci

  2. #2
    Membre confirmé Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Par défaut
    bonjour,

    regarde peut être du coté de ce snippets :
    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
    16
    17
    <?php
      use_helper('Javascript');
     
      /**
       * Adds javascript code to delay a page redirect
       *
       * @param string 'module/action' or '@rule' of the action (same argument as url_for())
       * @param int time of delay in seconds. Default = 5
       * @return JavaScript tag for delayed page redirect
       */
      function delayed_redirect($internal_uri, $time = 5)
      {
        sfContext::getInstance()->getResponse()->addJavascript(sfConfig::get('sf_prototype_web_dir').'/js/prototype');
        $code = 'new PeriodicalExecuter(function() { location.href=\''.url_for($internal_uri).'\';}, '.$time.')';
     
        return javascript_tag($code);
      }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    hello,

    sinon, tu exécutes un sleep avant le header();.

    cf php.net/sleep

    a+

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Avec ZF je sais pas mais avec PHP il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header( "refresh:5;url=wherever.php" );
    Pas besoin de JavaScript avec ça.

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Oui en php c'est possible en javascript aussi.

    Mais pour l'heure je decouvre les fonctionnalité de zend et je souhaite voir ce que "lui" propose.

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Juste un conseil, évite les redirections JavaScript: les bots ne savent pas le suivre. Utilise autant que possible des redirections 301 ou REFRESH.

    Après pour Zend je sais pas vraiment, désolé.

  7. #7
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Ma redirection elle est toute bête c'est lorsque tu es logué, sa te redirige vers une autre page.

    Sauf que je pas que redirige en suivant, lais que sa signale que l’authentification a été un succès, et qu'une redirection est en cours.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Sauf que je pas que redirige en suivant, lais que sa signale que l’authentification a été un succès, et qu'une redirection est en cours.
    j'ai un peu buggé à la lecture de ta phrase voulais tu en venir au faits ?

    edit : bah moi aussi j'ai buggé..

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Ma redirection elle est toute bête c'est lorsque tu es logué, sa te redirige vers une autre page.

    Sauf que je pas que redirige en suivant, lais que sa signale que l’authentification a été un succès, et qu'une redirection est en cours.

    Salut, il n'est pas possible de mettre un temps d'attente sur une redirection avec les outils ZF.

    Tu dois utiliser la proposition de Benjamin.

    Maintenant dans ton cas, tu as deux possibilités.

    Soit :

    Tu crée une vue intermédiaire avec ton message et tu fais patienter 5 secondes avant de renvoyer vers la nouvelle vue/controller


    Soit :

    Tu utilise FlashMessenger() pour initialiser un message qui s’affichera en fonction de la réussite ou de l'échec.

    Cette dernière ayant ma préférence dans mes projets....couplé à JQuery cela donne des trucs vachement sympa

    MaitrePylos

  10. #10
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    je ne sais pas trop comment l'utiliser, alors j'ai essayé sa dans ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        $message = 'Nous avons fait quelquechose lors de la dernière requête';
        $this->_helper->FlashMessenger($message);
    Mais sa me retourne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call to a member function FlashMessenger() on a non-object in...

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Voici comment je procède, c'est un exemple de base, a toi de faire en sorte que cela soit joli.

    Dans mon layout.phtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         	 <?php if(!empty($this->flashMessenger)): ?>
          	 	<p> <b>Message(s) :</b><br /></p>
     
     
                <?php foreach($this->flashMessenger as $message): ?>
                <p class="errors">
                    <?php echo $message; ?><br/>
                 </p>
                <?php endforeach; ?>
     
            <?php endif; ?>
    dans les controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class IndexController extends Zend_Controller_Action {
     
        private $_flashMessenger = NULL;
     
        public function init() {
            $this->_flashMessenger = $this->getHelper('FlashMessenger');
            }
        //voici un exemple de comment je procède
        public function indexAction(){
         $message = 'Nous avons fait quelquechose lors de la dernière requête';
        $this->_flashMessenger->direct($message);
    }
    dans le bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $layout = $this->getResource('layout');
    $view = $layout->getView();
     
            //Gestion des messages d'erreurs
            $flashMessenger = new Zend_Controller_Action_Helper_FlashMessenger();
            $messages = $flashMessenger->getMessages();
            if (is_array($messages)) {
                $view->flashMessenger = $messages;
            }

Discussions similaires

  1. Problème sur une redirection .htaccess
    Par omelhor dans le forum Apache
    Réponses: 1
    Dernier message: 30/10/2011, 10h30
  2. Réponses: 2
    Dernier message: 07/09/2010, 20h57
  3. Réponses: 14
    Dernier message: 23/05/2010, 11h49
  4. [MySQL] [MySQL] Problème d'update sur une redirection
    Par Boons49 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 09/03/2009, 15h16
  5. explication sur une redirection
    Par laurentSc dans le forum Débuter
    Réponses: 0
    Dernier message: 16/04/2008, 16h05

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