Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut,
Je suis nouveau avec zf2 et je tente de tourner un script jQuery en vain.
Je fais appelle à ce script test.js dans mon fichier layout.phtml mais ça ne marche pas.
voici l'appel des scripts:
[lang=php] <?php echo $this->headScript()->prependFile($this->basePath() . '/js/html5.js', 'text/javascript', array('conditional' => 'lt IE 9',)) ->prependFile($this->basePath() . '/js/bootstrap.min.js') ->prependFile($this->basePath() . '/js/jquery.min.js') ->prependFile($this->basePath() . '/js/jquery.easing.1.3.js') ->prependFile($this->basePath() . '/js/test.js') ?> /*---------Mon fichier en question---*/
J'ai alors retiré l'appel de fichier et j,ai inséré directement le script même dans la vue layout.phtml dans un premier temps mais ça ne marche puis dans un deuxième temps dans index.phtml contenant le code html sans succès.
Le script le voici:
[lang=javascript]<script type="text/javascript"> $(function() { $('ul.nav a').bind('click',function(event){ var $anchor = $(this); $('html, body').stop().animate({ scrollTop: $($anchor.attr('href')).offset().top }, 1500,'easeInOutExpo'); event.preventDefault(); }); }); </script>
Merci d'avance!!
Hors ligne
Plop, penses à utiliser la balise code avec le langage qui va bien c'est plus sympa pour lire le morceau de code .
Es-tu sûr que tes fichiers javascript sont bien chargés ? Je suis pas certain mais je pense que l'ordre peut avoir un impact aussi. Donc je t'encourage à remplacer tous tes prependFile (le fichier à insérer en premier est à mettre en dernier) par des appendFile (le fichier à insérer en premier est à mettre en premier) et ordonner un peu tout ça en mettant d'abord celui d'html5 ensuite jQuery puis bootstrap et ton fichier test.js.
Tu peux aussi utiliser l'aide de vue basePath comme ceci : $this->basePath('/js/html5.js')
Après si tout est bon c'est un ressort javascript et ça ne concerne plus vraiment le ZF2
Hors ligne
Orkin, Je crois qu'il vaut mieux utiliser le prependFile pour le cas où tu inclus d'autres scripts sur une vue spécifique (sinon les fichiers inclus ne sont pas bien placés par rapport à ceux du layout -- enfin c'était comme ça à l'époque de la première release du zf2).
Perso je prepend html5.js, jquery et jqueryui et ensuite je fais des append sur les autres.
Si tu restes avec les prependFile, webjunior, il faut que tu inverses l'ordre d'inclusion des fichiers.
Si tu choisis les appendFile, tu as juste à changer "prepend" par "append".
Ou sinon tu fais comme moi, tu prepend donc html5.js, jquery et jqueryui et tu append les autres.
Hors ligne
Eu normalement non tu n'es pas obligé puisque si tu fais en append et que tu dois ajouter un fichier js plus tard dans une vue il sera mis après avec le append. Dans le cas ou tu fais prepend suffit effectivement d'inverser l'ordre des fichiers.
De ce que j'avais vu le append est utilisé quand tu mets les fichiers en haut début de body et le prepend en fin pour un chargement plus rapide.
Hors ligne
Peut-être qu'aujourd'hui le problème a disparu, mais à l'époque (une des dernières rc ou première release), il existait ce problème. D'où cette résolution trouvée je ne sais plus où.
Orkin a écrit:
De ce que j'avais vu le append est utilisé quand tu mets les fichiers en haut début de body et le prepend en fin pour un chargement plus rapide.
Pas claire ton histoire.
Hors ligne
Salut Orkin,
merci pour le conseil. ça a bien marché. J'ai utilisé le prependFile. Quand je mets mon script dans le body, dans le fichier .phtml ou encore dans le booststrap.min.js ça marche mais bien sûr c'est pas efficace. mais quand je le mets dans mon fichier test.js ça marche pas.
Hors ligne
est-tu sur que le fichier test.js est bien correctement inclus? Le chemin que tu lui indique est le bon?
vérifie si dans le code source de ta page tu vois bien ton script dans la balise <script src="tonchemin/test.js"></script> (si tu la vois apparaître)
Hors ligne