Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'ai découvert il y'a quelques semaines ZF et j'avoue que je suis tombé sous le charme.
Par contre, quelques principes de base me déboussolent un peu, du coup je viens vous enquiquiner avec mes questions...
Par exemple: headScript().
Pour la situation:
- J'ai un layout : default.phtml dans lequel je fais mon header avec
<?= $this->headScript(); ?>
et dedant je fais un
<?= $this->action('mon_action','mon_controlleur'); ?>
où mon mon_action est en fait une box dans ma colonne de droite. jusque là, tout va bien.
Seulement, j'avais envie d'ajouter a ma box des fonctions JS de mootools.
Je me suis dit "trop bien, j'ai qu'à faire un $this->view->headScript('file','/js/mootools.js'); et c'est bon !
Sauf que mootools.js n'est pas ajouté dans mon header....
Bêtement, je me dis que ZF tente d'appliquer mon headScript à la vue de mon_controlleur, et que du coup il zappe qu'il est en fait en plein milieu d'un layout ?
Mais alors... je l'ajoute comment mon mootools ?
L'interet de headScript n'est-il pas de pouvoir ajouter 'on-the-fly' ce dont on a besoin pour tel controlleur ?
PS: Je lance bien Zend_Layout avec startMvc.
Si vous pouviez m'éclairer...
Hors ligne
Si, 'on the fly' comme tu dis, mais si tu l'as affiché, avant, ca ne sert plus à rien
Vérifie que <?= $this->headScript(); ?>
n'est pas appelé avant ton
$this->view->headScript('file','/js/mootools.js');
Hors ligne
Je suis déçu du coup l'interet est réduit...
En fait, mon headScript() est dans le haut de mon layout, qui lui, appele ensuite mon_controlleur... j'en déduis qu'il est déjà passé donc
merci en tous cas, ça m'évitera de chercher encore pendant des heures.
Hors ligne
Tu sais quoi, perso j'ai un technique a 2 balles mais qui est tout bénéf.
Les scripts je les met en fin de page, juste avant </body>
1. Ton problème serait surement résolu!
2. Les pages sont rendues plus rapidement sur certains navigateurs car les js ne sont exécutés qu'une fois la page (enfin l'html) chargés.
Attetion, cette technique ne marche que si tu n'as aucun javascript inline (méthode que je conseille fortement pour la lisibilité/évolution/maintenance...
Hors ligne
Il est vrai que pour les header ou autre rendu intégré au layout.phtml, ca peut être embétant
Mais, logiquement, si tu places un appel de vue ou d'action à partir du layout.phtml (via partial ou action), c'est que ce rendu est toujours rendu ? Donc, ce que tu devais mettre dans ton controller, tu peux le mettre dans ton layout.phtml, ca revient au même
Mais ca fonctionne pour toutes les vues qui sont généré dans latout()->content. (je l'utilise pour les titres, css spéciaux et javascript dédié à une vue particulière)
Hors ligne