Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Tout est dit dans le titre de ce post. J'aurai besoin de récupérer ces informations dans une action. Est-ce possible ?
Merci et à bientot.
Dernière modification par whitespirit (07-04-2008 11:35:04)
Hors ligne
Oui c'est le dispatcher qui te donnera ces informations.
Tu le récupères donc dans une action avec $this->getFrontController()->getDispatcher()
Hors ligne
Je n'arrive pas à utiliser. Lorsque j'ai cette ligne, je sors en exception :
$this->getFrontController()->getDispatcher()
Je voudrais tester si le controlleur = un_autre controlleur.
Hors ligne
Bonjour whitespirit,
Le plus simple c'est :
$this->getRequest()->getControllerName();
A+, Philippe
Hors ligne
Et c'est possible de récupérer le nom du controlleur dans un helper ?
Hors ligne
une vue en MVC Context qui me permet de tester ou je me trouve:
<?php $request = Zend_Controller_Front::getInstance()->getRequest(); $disp = $this->disp; $disp .= "<br/><h1>Curently viewing:</h1>"; $disp .= "<h2>Module:</h2> ".$request->getModuleName()."<br/>"; $disp .= "<h2>Controller:</h2> ".$request->getControllerName()."<br/>"; $disp .= "<h2>Action:</h2> ".$request->getActionName()."<br/>"; echo $disp; ?>
Hors ligne
rebonjour whitespirit
Dans un helper tu as tjrs accès au controller courant avec $this->getActionController()
donc après (dans ton preDispatch par exemple) tu fais :
$ctrlName = $this->getActionController()->getRequest()->getControllerName();
A+, Philippe
Hors ligne
je suis content Merci de la rapidité et l'efficacité de vos réponses.
Hors ligne
Bonjour,
Je voudrais savoir s'il est possible de récupérer le nom du controleur appeler directement dans le bootstrap
Ex
http://monsite/controleur1/action1
et dans mon bootstrap avoir une variable qui est intancié avec "controleur1"
Hors ligne
mmm... Même si t'arrives à le faire, je ne pense pas que tu es sur la bonne voie. Le bootstrap sert d'initialisation des infos et lancer le processus MVC.
Si tu veux récupèrer ces infos en premier lieu, et j'imagine que c'est ce que tu veux faire et ensuite dispatcher toi même vers tes controlleurs, utilise les plugins de Zend. Je te rappelle qu'un plugin est exécuté avant toutes choses (regarde le tuto de phillipe sur les helpers qui est très instructif). Donc c'est dans ton plugin que tu récupère ces infos, après tu peux faire tes tests et rediriger vers ou tu veux.
Sinon chaque controller implémente la fonction preDispatch(), cette fonction se charge avant même qu'une action du controlleur soit lancé. Ici aussi tu peux faire tes redirections. En fait le plugin agit comme un preDispatch (entre autre).
Hors ligne
Sinon on peut créer un helper pour le coup, pour pouvoir récupérer les infos dans la vue.
Exemple :
Fichier Helper GetContext.php (basé sur le code de Lethak)
class Zend_View_Helper_GetContext { public function getContext($context='') { $request = Zend_Controller_Front::getInstance()->getRequest(); switch ($context) { case 'module': return '<strong>MODULE::</strong>[' . $request->getModuleName() . ']'; break; case 'controller': return '<strong>CONTROLLER::</strong>[' . $request->getControllerName() . ']'; break; case 'action': return '<strong>ACTION::</strong>[' . $request->getActionName() . ']'; break; default: return 'Miss Context parameter'; break; } } }
L'appel dans la vue:
... <p><?= $this->getContext('module'); ?></p> <p><?= $this->getContext('controller'); ?></p> <p><?= $this->getContext('action'); ?></p> <p><?= $this->getContext(); ?></p> ...
A adapter en fonction de vos besoins
Dernière modification par elkolonel (26-06-2008 09:22:40)
Hors ligne
Pages: 1