Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour ,
j'ai un petit soucis de comportent des Placeholder headScript() et headLink() que je n'arrive pas à le comprendre.
j'essaye d'insérer un code JavaScript et une feuille css spécialement pour une vue , j'utilise pour ça les Placeholders
<?php echo $this->headScript()->appendFile('/js/accordion/accordion.js');?> <?php echo $this->headLink()->appendStylesheet('/css/accordio/accordion.css')?>
toute marche biens , mais quand je demande la page je vois dans la source que le JavaScript et la feuille css sont inérer deux fois enetre le <head></head> et une deuxième fois dans le corps de la page (où le contenu de la vue )
Dernière modification par younesD (01-02-2011 17:12:36)
Hors ligne
Pour ajouter un script à la liste des scripts tu dois juste faire:
$this->headScript()->appendFile('/js/accordion/accordion.js');
Et quand tu veux qu'il s'écrive dans ta page tu dois faire
echo $this->headScript();
Là tu dois faire 2 fois le echo $this->headScript();, une fois dans ton layout (le bon endroit) et une fois dans ta vue, d'où leur double présence dans la page.
Hors ligne
bonjour, et merci Ithier pour ta réponse.
j'ai essayé ça , mais le soucis que j'ai , c'est que j'insère la librairie Jquery dans Layout()
<?php echo $this->headScript()->appendFile('/js/biblio/jquery/jquery-1.4.4.min.js')?>
et dans la vue où j'ai besoin du fichier accordion.js je mets
$this->headScript()->appendFile('/js/accordion/accordion.js');
dans ce cas je trouve accordion.js inséré avant Jquery .
Hors ligne
Bonjour,
Ceci se produit parce que la vue est rendue avant le layout.
Pour être certains que les ressources ajoutées dans le layout apparaissent avant celles des vues, il faut utiliser l'ordre LIFO (Last In First Out) dans le layout, et l'ordre normal (FIFO) dans les vues.
Exemple :
# layout.phtml
$this->headScript()->prependFile('min/?g=layout') ->prependFile('_js/_langs/' . $this->currentLocale() . '/global.js');
Ici, global.js sera ajouté en haut de la pile (en premier), l'ordre est résolu à l'envers.
# account/new.phtml
$this->headScript()->appendFile('min/?g=account');
Ce qui me donnera bien au rendu final :
<script type="text/javascript" src="_js/_langs/fr_FR/global.js"></script> <script type="text/javascript" src="min/?g=layout"></script> <script type="text/javascript" src="min/?g=account"></script>
A+ benjamin.
Hors ligne
Bonjour ,
merci benjamin bien expliqué , c'est exactement ce que je cherche à comprendre !
Hors ligne
Pages: 1