2010-03-03 3 views
0

Je souhaite modifier une vue d'Action Helper dans Zend Framework dans la méthode preDispatch(). Je fais quelque chose comme:Modification d'une vue depuis Action Helper dans Zend Framework

class MyHelper extends Zend_Controller_Action_Helper_Abstract { 
    public function preDispatch() { 
     $view = $this->getActionController()->view; 
     $view->doSomething(); 
    } 
} 

Est-il acceptable de le faire? Qu'est-ce que je veux faire est - MyHelper doit ajuster certains chemins vers les modèles (dans ce cas est un SmartyView) selon les paramètres régionaux des utilisateurs, donc je voudrais lire les paramètres régionaux des utilisateurs dans mon aide d'action, puis ajuster la vue en conséquence.

Je fais ici ou devrais-je aller d'une manière différente?

Merci!

Répondre

1

Vous pouvez le faire avec un ActionHelper. Mais vous auriez à l'appeler explicitement alors. La méthode de rappel preDispatch n'existe pas dans un Action Helper. Si vous voulez utiliser les rappels de dispatch, vous cherchez un Zend Controller Plugin.

Une alternative à votre approche serait d'init Zend_Locale dans votre bootstrap, avant d'initialiser Zend_View. Vous pouvez alors récupérer les paramètres régionaux lors de l'initialisation Zend_View et ajuster les chemins directement pendant le bootstrap, au lieu du cycle d'envoi. Voir les exemples sur Zend_Application pour une idée.

+0

J'ai déjà utilisé Zend_Locale dans bootstrap, mais les ajustements de chemin ne dépendent pas seulement des paramètres régionaux, mais peuvent aussi dépendre des paramètres de requête, donc faire cela dans bootstrap n'est probablement pas la meilleure façon de le faire ... Je vais essayer avec les plugins du contrôleur, merci! – Laimoncijus

+0

Comment accéder à l'objet de vue à partir de Zend Controller Plugin? D'une certaine façon je ne peux pas le voir n'importe où sur l'objet plugin ... – Laimoncijus

+1

@Laimoncijus Vous pourriez faire 'Zend_Layout :: getMvcInstance() -> getView()' – Gordon

Questions connexes