Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je débute avec Zend, j'ai fait plusieurs tutoriaux et maintenant, je voudrais avoir un layout par page.
J'ai donc lu et cherché, je ne dois pas être loin mais il doit me manquer quelque chose.
Ainsi, je me tourne vers vous.
Déjà, faut-il avoir un fichier layout par action (sous le répertoire "layouts" par exemple) ?
Merci pour vos réponses.
Dernière modification par ldv (14-10-2008 09:52:46)
Hors ligne
Salut ldv,
Je pense que tu n'as pas bien saisi ce qu'est un "layout".
Je t'invite à lire ce thread pour avoir une explication simple.
Pour te répondre, il ne faut surtout pas avoir un layout par action
L'intérêt des layouts c'est de ne construire qu'une seule fois ta structure de page et de ne charger à l'intérieur que les parties qui changent.
Après tu peux biensûr avoir plusieurs layout, un exemple au hasard, un pour la page d'accueil, un pour les pages internes du site.
Tu peux maitriser toi même le layout utilisé pour chaque action si tu le souhaites, mais je ne répondrai à ça que si cette question arrive
A+ benjamin.
Dernière modification par Delprog (13-10-2008 15:26:55)
Hors ligne
En cherchant, j'avais lu ce post et je l'ai donc relu.
En fait, tu as compris le "vrai sens" de mon post : je souhaite modifier le layout utilisé en fonction de l'action. ;-)
Hors ligne
Ok, donc la réponse
$this->_helper->layout->setLayout('mon-layout');
Ce qui implique que tu dois avoir un layout nommé 'mon-layout.phtml' dans le répertoire par défaut des layouts.
Par exemple si tu as dans ton bootstrap :
Zend_Layout::startMvc(array('layoutPath'=>'../application/truc/views/layouts'));
Il ira chercher automatiquement le layout 'mon-layout.phtml' dans ce dossier.
Maintenant si tu n'as pas passé de chemin par défaut à la fonction il s'attend à trouver ton layout dans le dossier 'scripts' de ton application.
Tu peux peut-être aussi passer un chemin à la fonction setLayout, à tester.
A+ benjamin.
Dernière modification par Delprog (13-10-2008 16:01:42)
Hors ligne
ok, il me manquait alors la première partie avec le helper.
Merci pour la réponse.
Hors ligne
Si c'est ok n'oublie pas d'ajouter un petit "[Résolu]" dans le titre de ton premier message, ça en aidera d'autres
A+ benjamin.
Hors ligne
Je teste demain et je mettrais "résolu" au cas où.
Hors ligne
Au fait, j'ai toujours un souci.
La ligne :
$this->_helper->layout->setLayout('layout');
je la mets où ? :-(
et il faut que je déclare un helper ?
Dernière modification par ldv (14-10-2008 09:41:20)
Hors ligne
Si c'est pour une action en particulier, directement dans l'action elle-même, en première ligne.
Si c'est pour un controller dans son ensemble, tu peux la mettre dans la fonction init() du controller.
Après si tu veux gérer les layouts en fonction de chaque controller/action en amont, il faut te dev un plugin que tu déclares au frontcontroller.
A+ benjamin
Dernière modification par Delprog (14-10-2008 09:46:59)
Hors ligne
ok, merci, cela fonctionne. ;-)
Hors ligne