Menu latéral avec gestion des droits, sous menus

Par maxonz, il y a 13 ans


Bonjour,
je découvre CakePhp et j'aimerais pouvoir mettre un menu latéral dans mon template.
Donc je voulais déjà savoir si vous pouviez m'orienter sur la façon d'inclure le menu latéral dans mon template (par le biais de view blocks certainement, mais est-il possible d'isoler la partie menu dans un controlleur à part?)

Et ensuite, mon menu serait de la forme suivante:

Donc selon vous, est-il possible de faire ce menu de manière automatique en "listant" les controlleurs? Ou bien faut il que je mette tout dans array en dur dans le code? Ou dans une bdd?

Voila, je sais que mes questions sont assez vagues et peut être maladroites, mais je débute et là je suis complètement coincé sur comment aborder la chose... :S

Merci de votre aide !

5 réponses

maxonz, il y a 13 ans

Up? Ce que je demande n'est pas possible, il faut le faire en dur dans le template?

Maenhyr, il y a 13 ans

Bonjour,

si tu souhaites quelque chose d'évolutif, je te conseille de reproduire un système similaire à Wordpress par exemple. Le principe, tu as un MVC Menu, il va gérer le ou les menus que tu souhaites avoir. Ensuite tu crées un MVC Menupage, ce MVC va gérer un lien (Agenda, liste des évènements, ...).

Menupage

  • id

  • titre de lien

  • controller

  • action

  • Menupage parent

  • ordre

  • menu_id

Menu

  • id

  • titre

Le MVC Menu n'est pas nécessaire si tu es sur de ne créer qu'un seul menu pour ton application, mais je le mets quand même pour expliquer le principe. Il peut manquer des éléments dans la description des champs à créer dans la BDD suivant tes besoins futurs.

Pour afficher le menu a travers n'importe quelle page, je te suggère de regarder le principe de requestAction ( http://book.cakephp.org/2.0/en/controllers.html#Controller::requestAction).

maxonz, il y a 13 ans

Yeah ! Super, merci ! :)

Sinon, j'abuse un peu, mais j'ai une fonction quelconque qui transforme un array en listes html. Si je veux bien faire, faut que je la mette dans un helper? Dans une action de controlleur?

Merci encore et bonne année ! :)

Maenhyr, il y a 13 ans

Ca va dépendre de l'utilisation. Si tu ne l'utilises que pour une action dans un Controlleur, tu le laisses dans cette action. Si cette fonction est générique et est utilisée dans d'autres Controller, alors il vaut mieux créer un Helper en effet.

maxonz, il y a 13 ans

Ok, va pour le Helper ! Merci l'ami !