Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Suite à l'un de mes posts sur les menus, je me suis lancé dans la création d'une classe modèle Menu (/app/models).
Lorsque mon utilisateur navigue sur le site, l'onglet du menu dans lequel il se trouve est mis en surbrillance grâce à de la CSS. Pour savoir dans quel onglet l'utilisateur se trouve, j'envoie à mon layout, depuis mon controller, le code suivant :
$view = Zend_Registry::get('view'); $this->view->menu = 'mon onglet'
Mon problème est donc de savoir comment je peux récupérer dans ma classe modèle la valeur de $this->view->menu.
Voici le code de ma classe :
class Menu { public $href; public function __construct($href) { $this->href = $href; } public function createSubMenu() { $view = Zend_Registry::get('view'); print "<ul>"; foreach($this->href as $link => $label) { if($view->submenu == $link) print "<li id='active'><a id='current' href='"; else print "<li><a href='"; print ROOT_URL . "/" . $link . "'>" . $label . "</a>"; } print "</ul>"; } }
Voici le code d'un de mes menus (/app/layouts/monMenu) :
<?php $lien = array ('themes' => 'Thèmes', 'institutions' => 'Institutions', 'directions' => 'Directions', 'rubriques' => 'Rubriques', 'section-budgetaires' => 'Section budgétaires', 'sections-gestion' => 'Sections gestions', 'departements' => 'Départements', 'personnel' => 'Personnel', 'activites' => 'Activités' ); $subMenu = new Menu($lien); $subMenu->createSubMenu();
Et dans mon layout, j'appelle mon menu.
J'espère avoir été suffisamment clair pour que vous puissiez m'éclairer en retour.
Hors ligne
le modèle ne doit rien avoir à faire avec la vue
c'est avec le contrôleur qu'il doit discuter
c'est au contrôleur de récupérer la valeur de l'onglet de la vue et la donner au modèle
A+JYT
Hors ligne
Merci pour ta réponse sekaijin,
Cela signifie que je dois créer un controller qui fait appel à ma classe modèle. Mais comment est-ce que j'affiche mon menu dans ma vue ? Parce que mon controller ne servirait qu'a afficher le menu et non pas à faire le traitement de ma page... A moins que l'on puisse appeler 2 controller en même temps, ce qui m'étonnerait ?
Hors ligne