Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je cherche à faire un truc tout bête, mais je ne trouve pas comment y accéder.
Pour expliquer rapidement, je met en place un squelette d'application générique, dont le premier rôle est de charger la configuration (environnement + parametres).
J'utilise pour ça un plugin d'initialisation (proche de celui proposé par Zend, mais quand même pas mal modifié).
Dans ce plugin, je charge tout ce qui va bien, j'initialise ma vue ce cette façon :
/** * Initialise la vue en fonction des paramètres définis dans * Tight_Registry::getParams() * ou avec des valeurs par défaut * * @return void */ public function initView() { Zend_Loader::loadClass('Tight_View'); $this->_view = new Tight_View(); $scripts = Tight_Registry::getParams()->get('view')->get('scripts', null); if (!is_null($scripts)) { foreach($scripts as $script) { $this->_view->addScriptPath($this->_root . $script->scriptPath); } } $scripts = $this->_view->getScriptPaths(); if (empty($scripts)) { $this->_view->addScriptPath($this->_root . '/application/views/scripts'); } $this->_view->setHttpRoot(Tight_Registry::getConfig()->app->get('httpRoot', '')); $doctype = Tight_Registry::getParams()->get('view')->get('doctype', 'XHTML1_STRICT'); $this->_view->doctype($doctype); $encoding = Tight_Registry::getParams()->get('view')->get('encoding', 'UTF-8'); $this->_view->setEncoding($encoding); // layouts $layoutPath = Tight_Registry::getParams()->get('view')->get('layoutPath', '/application/views/layouts'); $defaultLayout = Tight_Registry::getParams()->get('view')->get('defaultLayout', 'layout'); Zend_Layout::startMvc(array( 'layoutPath' => $this->_root . $layoutPath, 'layout' => $defaultLayout )); // Recupère l'objet de vue utilisé par les actions des controllers $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->initView(); $viewRenderer->setView($this->_view); }
Ensuite, plus loin dans mon Tight_Plugin_Initializer, je rajoute au moment d'initialiser les plugins à passer au Front Controller, mon plugin qui configure la langue:
Zend_Loader::loadClass('Tight_Plugin_Language'); $this->_front->registerPlugin(new Tight_Plugin_Language($this->_root));
Dans mon Tight_View, j'ai une méthode setTranslator() (proche de celle proposée par Azema dans son tuto).
Donc après configuration de mon Zend_Translate dans mon plugin, j'aimerais l'envoyer à ma vue via cette méthode setTranslator().
Sauf que, mis à part le fait de passer mon objet view au constructeur de mon plugin Tight_Plugin_Language, je ne trouve aucun moyen d'accéder à ma méthode. (vu que initView() est appelé avant initPlugins())
Une idée ?
Merci.
A+ benjamin.
Hors ligne
Alors j'ai fait de cette manière dans le plugin Tight_Plugin_Language :
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $view = Zend_Layout::getMvcInstance()->getView(); $view->setTranslator($translate); $viewRenderer->setView($view);
Mais je ne suis pas convaincu.
A+ benjamin.
Hors ligne
Pages: 1