22
août
2008
Rediriger vers la page d’où l’on vient avec ZF
août
2008
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