Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je vais mettre dans mon layout en dessous de mon content et avant la fin de la balise body l'insertion de jQuery mais je voudrai pouvoir lorsque j'en ai besoin depuis mes vues insérer en dessous du jQuery un script js.
Dois je créer une variable dans l'action en question et tester la présence de cette variable dans mon fichier de layout et l'afficher si elle existe, ou y'a t'il des variables existantes prévues pour ça ?
J'ai trouvé le moyen pour insérer les scripts facilement dans le header mais pas avant la fin de la balise body
Dernière modification par siriu (26-10-2011 10:24:42)
Hors ligne
Pour la gestion des js, ZF utilise le helper de vue headScript: n'importe ou dans ton application tu ajoute au headScript le script que tu veux inclure:
[lang=php] $this->headScript()->appendFile('mon_script.js');
Il y a plein de méthodes pour ajouter des js à headScript, regarde la doc http://framework.zend.com/manual/en/zen … headscript
Ensuite dans ton layout à l'endroit que tu veux et donc juste avant la fermeture de ton body par exemple, tu ajoutes le code
[lang=php] <?php echo $this->headScript(); ?>
Dernière modification par Ithier (27-10-2011 16:47:21)
Hors ligne
Je ne vois jamais l'intérêt de mettre des bout de JS partout
Un script dons l'entête faisant exactement la même chose.
le seul truc que permet un script dans le code HTML est un truc qui devrait être interdit tant c'est pourave en terme de perf
"document.write"
tout développer JS un peut averti (il suffit de lire la doc) sait que
document.write implique une réinterprétation du code HTML (et donc javascript) par le moteur de rendu.
sans compter qu'en plus il existe une solution très simple de sen passer.
mettre un id sur le tag HTML ou on veut insérer quelque chose et fait un javascript qui s'exécute au onLoad soit donc quand la page est chargé.
mon code Html <div><script>document.write("du code généré à insérer");</script></div>
se remplace très facilement par
<html><head> <script>function insertMyCode () { document.getElementById("monId").innerhtml("du code généré à insérer"); } </script> </head> <body onload="insertMyCode()">.... mon code Html <div id="monId></div>
ces deux script ont le même effet le premier recharge deux fois le html pour obtenir le résultat le second une seule fois.
et vu que tu cause de jQuery c'est en core plus simple à écrire.
Je n'ai jamais trouvé un seul cas ou l'ajout de code dispersé dans le source html était impossible à reproduire dans l'entête.
de plus je n'ai jamais trouvé un seul cas ou un script statique (src=urlstatique) ne pouvais remplacer un script généré dynamiquement.
et lorsqu'on sait que le navigateur garde en cache les script statique compilé alors qu'il lui faut rechargé par le réseau et re compiler les scripts dynamique il n'y a pas photo.
A+JYT
PS: pour info ma dernière appli Zend 26000 lignes de js et 30000 lignes de php
Zero pb de perf
Hors ligne
Merci pour vos réponses à tous les deux.
@sekaijin excuses moi je suis "junior" mais pourquoi parles tu de document.write ?
Je veux juste insérer un script de vérification de formulaire et je me sert effectivement dans ce script jQuery des id du formulaire mais d'après ce que j'ai lu, on peut mettre le script dans le head mais le mieux c'est avantla fin de la balise <body> pour le confort de l'internaute...
Je suis d'accord, je pense que ça ne change pas grand chose, mais vu que j'ai la possibilité je pense que j'ai avantage à le faire, au pire "ça ne mange pas de pain"
Hors ligne
siriu a écrit:
mais d'après ce que j'ai lu, on peut mettre le script dans le head mais le mieux c'est avantla fin de la balise <body> pour le confort de l'internaute...
Gnééé O_o
Si tu veux parler du fait que ton script risque de démarrer avant que la page n'ait fini de se charger, sache que jQuery permet d'exécuter du javascript une fois le document chargé, comme ceci :
$( document ).ready( function() { // Ton code ici } );
Hors ligne
Le chargement des js à la fin du body n'est pas pour que le code s'exécute à la fin du chargement mais pour des questions de performances cf http://developer.yahoo.com/performance/ … #js_bottom .
Quand à ce que je disais à propos d'utiliser le headScript partout dans l'application, ce n'est pas forcément pour du code mais aussi pour des fichiers de scripts. Tu peux ainsi dans ta vue utiliser la fonction appendFile pour charger juste les scripts qui sont nécessaires pour cette page, et ensuite positionner leur chargement dans la page exactement où tu veux dans le layout.
Hors ligne
siriu a écrit:
Merci pour vos réponses à tous les deux.
@sekaijin excuses moi je suis "junior" mais pourquoi parles tu de document.write ?
Je veux juste insérer un script de vérification de formulaire et je me sert effectivement dans ce script jQuery des id du formulaire mais d'après ce que j'ai lu, on peut mettre le script dans le head mais le mieux c'est avantla fin de la balise <body> pour le confort de l'internaute...
Je suis d'accord, je pense que ça ne change pas grand chose, mais vu que j'ai la possibilité je pense que j'ai avantage à le faire, au pire "ça ne mange pas de pain"
Bonjour
Je dis simplement qu'insérer un js dans le HTML ne sert absolument à rien
une référence dans le Header est largement suffisant.
la seule méthode qui implique de devoir mettre du js dans le code html c'est document.write.
Et j'ajoute qu'il existe toujours une autre façon de faire que d'utiliser document.write.
pour la vérification d'un formulaire il n'est absolument pas nécessaire de mettre du code js dans le HTML un script dans l'entête est largement plus efficace.
A+JYT
Hors ligne