Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Dans mon layout, je fait ceci :
<?php echo $this->action('menu','index', 'nav'); ?>
Mais, j'ai un probleme.
Lorsque j'ouvre l'action user/index (ou n'importe quelle autre action)
L'action nav/index/menu me regénère la vue de user/index une deuxième fois ! Elle ne devrait que générer mon menu...
Ou est l'erreur ?
Merci
Hors ligne
En fait, j'ai trouvé le pourquoi (mais pas comment le résoudre)
nav/index/menu fait le rendu de la vue de l'action appelé (donc user/index)
pourquoi ? viewrender par défaut sélectionne la vue de l'action, et non pas la vue de la requete ...
Hors ligne
En effet c'est le comportemetn par defaut.
Je suppose que nav est un module, index le controller et menu l'action?
Envoye ton code à la limite on y vera peut être plus clair.
Hors ligne
oui, c'est une hiérarchie modulaire
mon layout
<?php $this->headLink()->prependStylesheet('/style/default.css') ?> <?php echo $this->doctype('XHTML1_STRICT') ?> <html> <head> <?php echo $this->headTitle() ?> <?php echo $this->headLink() ?> <?php echo $this->headScript() ?> <?php echo $this->headStyle() ?> </head> <body id="<?php echo $this->moduleName; ?>"> <?php echo $this->partial('header.phtml') ?> <?php echo $this->action('menu','index', 'nav'); ?> <div id="containerCols"> <div id="left"> <?php //echo $this->action('status','index', 'nav'); ?> <?php //echo $this->action('sidebar','index', 'nav'); ?> </div> <div id="content"> <?php echo $this->layout()->content; ?> </div> <div class="clear"> </div> </div> </div> <?php echo $this->partial('footer.phtml') ?> </body> </html>
mon nav/index/menu
public function menuAction() { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $user = $auth->getIdentity(); $menu = array(); $acl = $this->_acl; if ($acl->isAllowed($user->gacl, 'domain')) { $menu['Domaine'] = 'domain'; } if ($acl->isAllowed($user->gacl, 'user')) { $menu['Utilisateurs'] = 'user'; } if ($acl->isAllowed($user->gacl, 'hotspot')) { $menu['Hotspots'] = 'hotspot'; } if ($acl->isAllowed($user->gacl, 'group')) { $menu['Groupes'] = 'group'; } $this->view->menu = $menu; } else { $this->_helper->viewRenderer->setNoRender(); } }
Hors ligne
mais, je fais quoi avec xdebug exactement ? je l'ai et il il est chargé dans mon php.ini
Hors ligne
j'ai rajouté cela dans mon action :
return ($this->view->render('index/menu.phtml'));
Mais, ca ne change rien
par contre, si je debug comme ca :
var_dump ($this->view->render('index/menu.phtml')); die();
Je constate bien que la vue rendue de mon menu est correcte !
Je n'y comprends plus rien
Ca doit venir du viewrenderer...
Dernière modification par nORKy (22-04-2008 11:00:55)
Hors ligne
ça devrait t'aider: http://www.z-f.fr/forum/viewtopic.php?pid=2894#p2894
En fait le principe c'est de débugger ton url courante pour avancé au pas à pas dans le code. Tu peux voir l'état des variables à chaque ligne et ainsi trouver beaucoup plus facilement ce qui plante
Hors ligne
met plutot ça
echo $this->view->render('index/menu.phtml'); return;
Mais je sui curieux de savoir pourquoi par defaut le comportement est si étrange...
Hors ligne
j'ai mis ca dans mon action menu : $this->_helper->viewRenderer('menu');
et la, ca marche, (il trouve quand même le bon chemin, à savoir nav/views/script/index/menu.phtml)
bizarre
Hors ligne
Raté, finallement, ca marche pas. C'est un hasard.
Dès que je vais dans le controlleur account du module user, il cherche mon menu.phtml dans nav/views/script/account/menu.phtml
donc, ca ne va pas
Hors ligne
Pages: 1