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