Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Hello,
J'ai un ptit soucis avec zend..
J'ai l'impression qu'il perd les infos du Registry après un "this->_redirect" effectué dans une action.
Je vous explique : J'ai un controller "Lang" avec les actions "fr" et "en".
J'ai donc 2 liens /lang/fr et /lang/en sur ma page d'accueil.
J'avais pensé utiliser Zend_Registry pour stocker la langue choisie et apparemment ça se fait bien sauf qu'après je suis obligé de faire un this->_redirect pour revenir sur la page d'accueil et on dirait bien qu'après ce redirect, les informations ne sont plus contenues dans le Zend_Registry, qqun en sait plus ?
J'ai également tenté avec les Namespaces (sessions), sans grand résultat... Quid ?
Hors ligne
C'est bon j'ai trouvé merci.
<?php
/** Zend_Controller_Action */
require_once 'Zend/Controller/Action.php';
class LangController extends Zend_Controller_Action
{
public function init()
{
$this->_helper->viewRenderer->setNoRender(true);
}
public function frAction()
{
$namespace=Zend_Registry::get('namespace');
$namespace->lang='fr';
Zend_Registry::set('namespace',$namespace);
$this->_redirect('/index',array());
}
public function enAction()
{
$namespace=Zend_Registry::get('namespace');
$namespace->lang='en';
Zend_Registry::set('namespace',$namespace);
$this->_redirect('/index',array());
}
}
?>
Sinon, y a quelqun qui sait m'expliquer comment utiliser les sessions dans une action ?
Merci.
Hors ligne
$espace = new Zend_Session_Namespace('nom de mon espace');
Hors ligne
Bonjour dividy,
L'idée est que quand tu fais un redirect, tu changes réellement de page PHP, donc toutes les données de la page précédentes sont perdues (sauf si tu les a gardées en session).
Là tu as 2 solutions :
- si tu n'as pas besoin de changer de page, tu peux regarder du coté de $this->_forward, là tu reste dans la même page PHP, donc les données de ta registry sont conservées
- si tu dois faire un redirect pour une raison ou une autre, là il faut enregistrer des données en session et pas dans la registry.
A+, Philippe
Hors ligne