2010-08-15 8 views
0

Mon application est supposée fonctionner comme ceci. Tout d'abord, l'action par défaut du contrôleur par défaut (en fonction de l'URL) fait son travail. Pour les besoins de cette question, nommez-le MyController et indexAction. Puis il transfère ($ this -> _ forward) à mon menu LayoutControllerAction qui restitue la partie navigation (menu de la base de données) et les transmet à footerAction, qui rend ensuite footer de la base de données (éléments qui sont dans db mais doivent être visibles dans chaque une seule page).Rendu des pièces de mise en page dans Zend Framework

Enfin /views/scripts/my/index.phtml est rendu dans la mise en page avec $ this-> layout() -> contenu.

La question est, comment dois-je rendre d'autres parties de la mise en page à leurs endroits appropriés? Ai-je besoin de fichiers supplémentaires menu.phtml et footer.phtml qui seraient en quelque sorte rendus par menuAction et footerAction de LayoutController et insérés d'une manière ou d'une autre dans les emplacements appropriés à l'intérieur de layout.phtml? Ou puis-je avoir juste un script layout.phtml avec tout le html à l'intérieur, et menuAction/footerAction fournit juste le texte de DB à insérer?

Je suis intéressé par un bon côté pratique de la programmation ainsi que par la technique "comment" si vous le pouvez.

Répondre

2

Je pense que vous devriez envisager d'utiliser un seul layout.phtml comme modèle. Donc, votre action par défaut ne rendra pas le contenu de la mise en page mais le contenu de la page elle-même. Par exemple, dans une application de blog, vous aurez la barre latérale et le pied de page, vous aurez également le contenu du message. Votre -> viewPostAction() rendra le post, et un plugin avec la méthode -> postDispatch() rendra le contenu de la mise en page dans chaque page.

Vous pouvez prendre comme base cette question: how to call multiple controller action from within any action in ZF?

Questions connexes