J'ai des pages dans mon application qui composent l'arborescence de navigation. Je voudrais insérer dynamiquement des pages dans ma navigation en utilisant les valeurs de la requête. J'ai déjà la logique pour trouver la page et ensuite appeler la méthode addPage()
dessus. Ce que je cherche, c'est comment passer facilement les valeurs Zend_Controller_Request
à Zend_Navigation_Page::factory()
afin que je puisse ajouter cette page. Peut-être même écrit en tant que plugin?Créer une instance Zend_Navigation_Page_Mvc d'un Zend_Controller_Request
Solution
angelp a le plus proche, alors je lui donne le crédit, mais voici ma solution:
$request = $this->getRequest();
if ($page = $this->view->siteNav->findBy('id', $page_id)) {
$page->addPage(Zend_Navigation_Page::factory($request->getParams())
->setParams($request->getParams())
->setLabel($this->view->title)
->setVisible(false));
}
Ce code est exécuté à partir d'une action du contrôleur. $this->view->siteNav
est une instance de Zend_Navigation
que j'ai dans la vue. getParams()
de l'instance Zend_Controller_Request
est facilement passé à Zend_Navigation_Page::factory()
, puis la méthode setParams()
de l'instance Zend_Navigation_Page_Mvc
.
Je suis conscient de la façon de construire un 'Zend_Navigation_Page' en utilisant un tableau clé => valeur construit manuellement, mais j'espérais qu'il y avait un raccourci en utilisant certaines méthodes du' Zend_Controller_Request' – Sonny