Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-10-2012 12:11:35

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Erreur de redirection dans un Controller_Action_Abstract

Bonjour à tous,

J'ai un controlleur abstrait que voici :

Code:

[lang=php]<?php 
abstract class Custom_Controller_Action_Abstract extends Zend_Controller_Action 
{
    /**
     * Helper method to redirect to a specific action or controller from a
     * specific module, via a specified route(or not) with specified parameters
     *
     * @param string $controller / $url which contains http in its composition
     * @param string $action
     * @param string $module
     * @param array  $params
     * @param string $route
     * @param boolean $reset
     */

...

...

public function redirect($controller = 'index', $action = 'index', $module = 'frontoffice', $params = array(), $route = null, $reset = true )
    {
        $current_controller = $this->_getParam('controller');
        $current_action     = $this->_getParam('action');
        $current_module     = $this->_getParam('module');
....

....

return $this->_redirect->setCode(301)
                                   ->setExit(true)
                                     ->gotoSimpleAndExit($action,
                                                        $controller,
                                                        $module,
                                                        $params);[/lang]

Je l'appelle comme ceci (je me suis basé sur çà) , depuis mon loginController:

Code:

$this->_redirect($this->view->url(array(), $requestUri));

Je l'utilisais depuis pas mal de temps, et là, j'ai cette erreur :

Code:

Notice: Undefined property: LoginController::$_redirect in ...

et çà : 

Code:

Fatal error: Call to a member function setCode() on a non-object in ...

Code:

return $this->_redirect->setCode(301)
                                   ->setExit(true)
                                     ->gotoSimpleAndExit($action,
                                                        $controller,
                                                        $module,
                                                        $params);

Pourquoi cela marchait avant ?

Je suis sur Ubuntu et Zend 1.12.0

Comment faire ? ou faire autrement svp ?

Merci
Fab

Dernière modification par __fabrice (12-10-2012 17:27:21)

Hors ligne

 

#2 12-10-2012 14:50:50

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Erreur de redirection dans un Controller_Action_Abstract

bonjour,
essaies de récupérer l'aide d'action redirector depuis le gestionnaire d'aide(helperBroker)

Code:

Zend_Controller_Action_HelperBroker::getStaticHelper('redirector')->setCode(301)
                                                                                                 ->setExit(true)
                                                                                                 ->gotoSimpleAndExit($action,
                                                                                                                               $controller,
                                                                                                                                $module,
                                                                                                                               $params);

Dernière modification par amiss (12-10-2012 14:52:31)

Hors ligne

 

#3 12-10-2012 17:24:57

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Erreur de redirection dans un Controller_Action_Abstract

Salut,

Merci, mais avec çà

Code:

[lang=php]return Zend_Controller_Action_HelperBroker::getStaticHelper('redirector')
            ->setCode(301)
            ->setExit(true)->gotoSimpleAndExit($action,$controller,$module,$params);[lang]

çà boucle, et j'ai un

Code:

Fatal error: Maximum execution time of 30 seconds exceeded

Bizarre...
F.

Dernière modification par __fabrice (12-10-2012 17:26:22)

Hors ligne

 

#4 13-10-2012 01:20:05

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Erreur de redirection dans un Controller_Action_Abstract

ta 1ère erreur "Notice: Undefined property: LoginController::$_redirect in " signifie que php ne reconnaît pas la méthode ou l'attribut appelé dans le cas précis il s'agit de la méthode $_redirect(...) qui n'est ni reconnue ni déclarée.
appel de redirect depuis le controller login

Code:

$this->redirect($this->view->url(array(), $requestUri));//car c'est bien redirect(....) qui est défini dans la super classe abstraite et non $this->_redirect(..)
//l'appel à la méthode redirect() ne respecte pas sa signature définit dans la classe abstraite

Je refais la méthode de redirection:

Code:

[lang=php]
//dans la super classe abstraite
public function redirect($controller = 'index', $action = 'index', $module = 'frontoffice', $params = array(), $route = null )
    {
return Zend_Controller_Action_HelperBroker::getStaticHelper('redirector')
                                    ->setCode(301)
                                     ->gotoSimpleAndExit($action,
                                                        $controller,
                                                        $module,
                                                        $params,
                                                         $route,
                                                          TRUE);
//->setExit(TRUE) est inutile car gotoSimpleAndExit() fait déjà un exit après redirection.

Maintenant depuis le controller on appelle la méthode redirect()  avec ou sans paramètres :

Code:

[lang=php]
$this->redirect();

Dernière modification par amiss (13-10-2012 01:46:53)

Hors ligne

 

#5 13-10-2012 01:43:13

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Erreur de redirection dans un Controller_Action_Abstract

Pour ne pas réinventer la roue à la place de la classe abstraite il est possible sinon recommandé de faire une aide d'action dans laquelle tu définis la méthode redirect() comme elle fut écrite dans la classe abstraite.

Hors ligne

 

#6 15-10-2012 17:24:50

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Erreur de redirection dans un Controller_Action_Abstract

Bon, je viens de tester avec çà 

Code:

$url = $this->view->url(array(), $requestUri);
$this->_helper->redirector->gotoUrl($url);

Je vais voir pour l'aide d'action pour la redirection. Quelqu'un a déjà un code tout fait, histoire, là non plus, de ne pas réinventer la roue smile

F.

Dernière modification par __fabrice (15-10-2012 17:25:03)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages