[ZF 1.*] Gestion d'un menu avec Zend_Navigation

Eléphant du PHP | 398 Messages

29 janv. 2014, 16:40

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 :D
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 398 Messages

03 févr. 2014, 15:00

J'ai plus ou moins réglé un premier soucis, mais je ne sais pas si c'est la bonne solution à appliquer du moins. J'ai placé mon tableau de menu dans une classe située dans le dossier "library/", et pour faire monter automatiquement les classes de library, dans le index.php, j'ai ajoutée cette ligne :
$autoloader->registerNamespace('Fonfonblog_');
Je ne sais pas trop pourquoi car je n'utilise pas encore les namespaces :/...
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 398 Messages

06 févr. 2014, 16:24

J'ai un début de solution ici : http://stackoverflow.com/questions/1243 ... -class-set
Mais je vous avoue que je ne comprend pas trop comment utiliser la solution apportée, qui consiste à surcharger Zend_View_Helper_Navigation_Menu...
Si ça se trouve c'est la seule solution :/...
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe