Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Une question qui est très certainement bête, mais bon il parait que le gars stupide n'est jamais celui qui pose la question (bon, il parait seulement )
Bref, j'ai un soucis : je souhaite créer un menu dynamique qui apparaitra dans plusieurs vues.
Cependant, je ne vois pas du tout comment je pourrais faire ça proprement, en respectant l'architecture MVC?
Je vous explique ma démarche un peu plus en détail (si vous voyez des trucs à reprendre, n'hésitez pas, je débute le mvc):
Architecture du site: a écrit:
/styles
/images
/PHP-INF
/ctrl
/IndexController
/'moduleController'
/AuthController
/'module' (=classes de modèles)
/Langue.php (classe de gestion de la langue perso, != Zend_Locale)
/Droits.php (classe de récupération des droits de l'user courant, sans utiliser Zend_Acl (stockage des droits en BD))
/views
/accueil.phtml (avant authentification)
/footer.phtml
/header.phtml
/interne.phtml (après l'authentification)
/menu.phtml (après authentification, variable en fonction des droits d'utilisateur et des modules courants)
/index.php
Dernière modification par haltabush (25-04-2007 11:12:38)
Hors ligne
Il y avait eu une discussion de ce type sur une inclusion de headers et de footers. Je pense que ton problème est assez proche. Tu as plusieurs solutions décrites :
http://www.z-f.fr/forum/viewtopic.php?id=34
A+, Philippe
Hors ligne
Non, ce n'est pas exactement ça (a moins que je n'ai pas tout compris, ce qui est fort possible).
En fait, je fait déjà des includes dans mes vues, pas de problèmes à ce niveau là.
Le problème vient plutôt du fait que mon menu sera entièrement dynamique, en fonction des droits de l'user et du module courant. En fait, ce n'est pas un problème vraiment technique, mais je ne sais pas trop si c'est une bonne idée que mon menu.phtml comprenne toutes les possibilités puisqu'il ne s'agit que d'une vue : ça ferais beaucoup de conditions je trouve.
En gros, j'aurais un truc comme ça dans mon menu:
<?php if ($this->curModule==...){?> <?php if ($this->droitCurModule==...){?> <a href='...'><?php echo $trad_menu1;?></a><br/> <?php }?> <?php }?>
Et ce répété un sacré paquet de fois... De même j'aurais des variables non déclarées dans mes conditions non appliquées (mes traductions ($trad_...))
Hors ligne
Ah ok, compris le problème
Ca ne me parrait pas choquant que ce code soit dans ta vue, par contre j'aurais tendance à le mettre dans un View_Helper (http://framework.zend.com/manual/en/zen … lpers.html).
Ton helper pourrait renvoyer un tableau contenant ton arbo. Ensuite dans ta vue, tu n'as plus qu'à faire une boucle sur ton tableau. Tu n'as plus les tests à faire, ils sont dans déjà faits dans le helper.
A+, Philippe
Hors ligne
Utilise des switch plutôt ca sera plus lisible sinon dans l'idéal ton menu construit le par un helper et qui renverra un tableau à deux dimensions (lien, titre) à ta vue comme ca tu n'auras pas de logique dans ta vue.
Edit: philippe à été plus rapide
Dernière modification par Isilgawen (25-04-2007 11:11:09)
Hors ligne
Un helper! Idée de génie
Pour le switch, je vais voir comment je peux faire
Merci beaucoup!
Hors ligne
Pages: 1