22
août
2008
Rediriger vers la page d’où l’on vient avec ZF
août
2008
Un article de doctorrock
Pas de commentaires
Cette question revient souvent, comment rediriger un internaute de la page d’où il provient ?
Un couple aide d’action/plugin permet une implémentation facile de ce mécanisme :
class Zfbook_Controller_Plugins_SessionSaveOrigin extends Zend_Controller_Plugin_Abstract
{
/**
* Hook à la sortie de la boucle de dispatching
* Mémorise l'Uri actuelle en vue de la réutiliser pour redirection
* sur la page précédente
*
* @return void
*/
public function dispatchLoopShutdown()
{
Zend_Registry::get('session')->requestUri = $this->getRequest()->getRequestUri();
}
}
{
/**
* Hook à la sortie de la boucle de dispatching
* Mémorise l'Uri actuelle en vue de la réutiliser pour redirection
* sur la page précédente
*
* @return void
*/
public function dispatchLoopShutdown()
{
Zend_Registry::get('session')->requestUri = $this->getRequest()->getRequestUri();
}
}
class My_ActionHelpers_RedirectorToOrigin extends Zend_Controller_Action_Helper_Abstract
{
/**
* Pattern Strategy
*
* @return void
*/
public function direct($message = null)
{
// redirection
if (!isset(Zend_Registry::get('session')->requestUri)) {
$gotoUrl = '/';
} else {
$gotoUrl = Zend_Registry::get('session')->requestUri;
}
Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->setCode(303)->gotoUrlAndExit($gotoUrl, array("prependBase"=>false));
}
}
{
/**
* Pattern Strategy
*
* @return void
*/
public function direct($message = null)
{
// redirection
if (!isset(Zend_Registry::get('session')->requestUri)) {
$gotoUrl = '/';
} else {
$gotoUrl = Zend_Registry::get('session')->requestUri;
}
Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->setCode(303)->gotoUrlAndExit($gotoUrl, array("prependBase"=>false));
}
}
Simple et relativement efficace dans la plupart des cas. Les cas complexes ( changements de domaines, changement de scheme [HTTPS] ) demanderont cependant plus de réflexion.
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007