Bonjour,
Je me remet un peu sur Zend en me construisant un petit site à la con sans ambition et je bloque un peu sur la création du menu. Pour ce, j'ai décidé d'utiliser Zend_Navigation().
[*]Premier soucis :
Je souhaite faire une classe genre NavigationController() avec une méthode me retournant un array contenant mon menu.
Pour ce, j'ai ajouté une méthode _initNavigation() dans mon bootstrap :
protected function _initNavigation ()
{
//Zend_Debug::dump(get_declared_classes());
$tab = array(
array(
'label' => 'Accueil',
'uri' => '/'
),
array(
'label' => 'Inscription',
'controller' => 'index',
'action' => 'inscription'
),
array(
'ulClass' => 'nav-sub',
'label' => 'About',
'type' => 'uri',
'pages' => array( // building the About container
array( // params needed for the Contact page (MVC page)
'label' => 'Contact',
'id' => 'idContact',
'action' => 'index',
'controller' => 'contact'
),
array( // params needed for the Contact page (MVC page)
'label' => 'Nous trouver',
'id' => 'idFindUs',
'action' => 'findUs',
'controller' => 'contact'
),
)
),
array(
'label' => 'Connexion',
'uri' => '/',
'id' => 'idLinkConnexion'
)
);
//Zend_Loader::loadClass('Fonfonblog_Controller_NavigationController', '../library/');
//$oNavigationController = new Fonfonblog_Controller_NavigationController();
//$navigation = new Zend_Navigation($oNavigationController->getMenuHeader());
$navigation = new Zend_Navigation($tab);
$this->bootstrap("view") ;
$view= $this->getResource('view') ;
$view->navigation($navigation);
}
Je ne sais pas trop comment charger ma classe (dans library\fonfonblog\controllers) avec Zend_Loader, du coup en attendant (et comme dans l'exemple ci-dessus), je place mon tableau de menu dans ma méthode (chose dont je n'aime pas !!!)
C est vrai qu'il y a la solution du fichier XML ou INI mais pour l'instant je veux essayer avec une classe

.
[*] Deuxième soucis qui me prend bien la tête :
Je veux que mon menu ressemble à ceci :
http://dbmwebdesign.fr/Modules/menus-ho ... tal01.html
Du coup dans ma vue appelée comme ça depuis le layout (je n'ai pas compris comment utiliser $this->layout()->nav :
echo $this->partial('header.phtml');
,
J'ai besoin d'appliquer la classe CSS "nav-main" au premier niveau ul, mais aussi "nav-sub" pour les sous-menus et là je bloque...
Pour appliquer "nav-main", je fais comme ceci :
$this->navigation()->menu()->setUlId('navigation');
$this->navigation()->menu()->setUlClass('nav-main');
//$this->navigation()->menu()->setUlClass('nav-sub')->setMaxDepth(2);
echo $this->navigation()->menu();
Ou encore forcer avec jQuery mais je veux eviter.
Merci d'avance
