2009-09-05 8 views
3

Je travaille sur un CMS en utilisant CakePHP et je veux créer un menu dynamique qui soit le même sur toutes les pages auxquelles l'utilisateur peut accéder. J'ai donc pensé à créer dans la mise en page (puisqu'il a partagé entre tant de pages et de vues) mais je ne sais pas comment accéder au modèle et obtenir les données de la base de données pour construire le menu. toute aide est appréciée.accès au modèle à partir du fichier layout dans CakePHP

Répondre

16

C'est parce que pour la séparation correcte MVC * dans Cake vous n'êtes pas censé accéder au modèle de la vue. La seule partie avec accès aux données doit être le contrôleur (via le modèle), qui le transmet à la vue, qui affiche simplement les données. En tant que tel, en utilisant un rappel beforeFilter dans votre AppController global à les données sont probablement le meilleur choix. En cas d'urgence, vous pouvez toujours accéder à n'importe quoi depuis n'importe où en chargeant une instance de la classe nécessaire en utilisant ClassRegistry::init, mais vous ne devriez pas l'être. * En réalité, dans "MVC correct" il n'y a aucun problème avec la vue obtenant des données directement du modèle. Vous ne devez pas le faire dans les modèles nécessairement, mais le code lié à la vue peut bien obtenir des données du modèle pour visualiser l'état du modèle. Cela ne fonctionne pas vraiment de cette façon dans Cake, car Cake n'est pas un MVC correct et les vues Cake par défaut ne sont que des templates.

3

Une alternative peut être requestAction, elle vous permet d'appeler des actions du contrôleur à partir de vues/mises en page, et dans ces actions, vous pouvez ensuite accéder au (x) modèle (s) souhaité (s).

Questions connexes