Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'ai un controlleur abstrait que voici :
[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:
$this->_redirect($this->view->url(array(), $requestUri));
Je l'utilisais depuis pas mal de temps, et là, j'ai cette erreur :
Notice: Undefined property: LoginController::$_redirect in ...
et çà :
Fatal error: Call to a member function setCode() on a non-object in ...
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
bonjour,
essaies de récupérer l'aide d'action redirector depuis le gestionnaire d'aide(helperBroker)
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
Salut,
Merci, mais avec çà
[lang=php]return Zend_Controller_Action_HelperBroker::getStaticHelper('redirector') ->setCode(301) ->setExit(true)->gotoSimpleAndExit($action,$controller,$module,$params);[lang]
çà boucle, et j'ai un
Fatal error: Maximum execution time of 30 seconds exceeded
Bizarre...
F.
Dernière modification par __fabrice (12-10-2012 17:26:22)
Hors ligne
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
$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:
[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 :
[lang=php] $this->redirect();
Dernière modification par amiss (13-10-2012 01:46:53)
Hors ligne
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
Bon, je viens de tester avec çà
$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
F.
Dernière modification par __fabrice (15-10-2012 17:25:03)
Hors ligne
Pages: 1