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:

  • Agenda
    -- Liste des évènements
    -- Nouvel évènement...
  • Membres
    -- Liste des membres
    -- Membres inactifs
    -- Nouveau membre...

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


Maenhyr
Réponse acceptée

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).

Maenhyr
Réponse acceptée

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
Auteur

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

maxonz
Auteur

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 ! :)

maxonz
Auteur

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