Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/08/2011, 08h57   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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 :
1
2
 
$this->_redirect('/');
Ma question est ma suivante : Peut on ajouter un delai avant la redirection ?

Merci
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 09h13   #2
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
bonjour,

regarde peut être du coté de ce snippets :
Code :
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);
  }
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 11h50   #3
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
hello,

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

cf php.net/sleep

a+
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 01/08/2011, 11h59   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Hello

Avec ZF je sais pas mais avec PHP il suffit de faire:
Code :
header( "refresh:5;url=wherever.php" );
Pas besoin de JavaScript avec ça.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/08/2011, 01h33   #5
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 10h47   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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é.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 17h29   #7
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 20h52   #8
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Citation:
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é..
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 09h08   #9
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 176
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 176
Points : 6 463
Points : 6 463
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
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 20h20   #10
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
je ne sais pas trop comment l'utiliser, alors j'ai essayé sa dans ma vue :
Code :
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 :
Call to a member function FlashMessenger() on a non-object in...
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 20h40   #11
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 176
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 176
Points : 6 463
Points : 6 463
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 :
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 :
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 :
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;
        }
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h43.


 
 
 
 
Partenaires

Hébergement Web