Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je dois avouer que je suis un peu largué avec Zend_Dojo et avec une bonne partie de Zend (j'ai tout de même déjà réalisé une bonne application avec donc je connais les bases), je ne le maîtrise pas encore correctement mais j'ai besoin d'utiliser ce composant assez rapidement pour un projet j'apprendrai en détail le reste au fur et à mesure. J'ai donc suivi un tuto sur les modules à l'adresse suivante: Tutoriel sur les modules. Pour celà ça fonctionne correctement. Avec cette architecture il y a donc un layout pour chaque module et un module Switcher qui permet apparemment de libérer un peu le Bootstrap et de gérer les layouts dynamiquement. Dans la doc de zend j'ai lu qu'il fallait utiliser la ligne suivante:
Zend_Dojo::enableView($view);
à l'endroit où l'objet view était créé. Dans mon cas il est créé dans le fichier ModuleSwitcher.php et non dans le bootstrap. Je voudrai donc savoir dans mon cas, où il faut placer cette ligne.
Ensuite j'ai dans l'index du module par défaut la le code:
<?php // setup required dojo elements: $this->dojo()->enable() ->setDjConfigOption('parseOnLoad', true); ?>
(juste pour tester, je n'ai mis aucun élément)
Dans le fichier frontend.phtml (le layout par defaut), j'ai le code suivant:
<?= $this->doctype('XHTML1_STRICT'); ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="fr"> <head> <?php $this->headTitle("Le projet $$$$$$"); ?> <?php $this->headLink()->appendStylesheet('/styles/style.css', 'screen, projection'); ?> <?php $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8'); ?> <?php echo $this->headLink(); ?> <?php if ($this->dojo()->isEnabled()){ $this->dojo()->setLocalPath('/js/dojo/dojo.js') ->addStyleSheetModule('dijit.themes.tundra'); echo $this->dojo(); } ?> <?php echo $this->headScript() ?> </head> <body> <h1>Le projet Tabtootic</h1> <?= $this->layout()->content ?> </body> </html>
Actuellement, l'erreur suivante apparait au chargement:
Plugin by name 'Dojo' was not found in the registry (en gros).
Dès que j'enlève cette partie:
<?php if ($this->dojo()->isEnabled()){ $this->dojo()->setLocalPath('/js/dojo/dojo.js') ->addStyleSheetModule('dijit.themes.tundra'); echo $this->dojo(); } ?>
L'erreur disparait. J'ai plus ou moins compris comment il fallait activer de part différents tutos mais je pense que le problème est dû à la façon dont est agencée mon architecture, bien qu'elle ne soit pas mauvaise je n'ai pas encore trouvé de réponse à l'activation de dojo dans une architecture modulaire.
Désolé pour le long post, merci par avance pour votre aide! ^^
Hors ligne
Hello, pas besion de ->setLocalPath('/js/dojo/dojo.js') , il va recupéré automatiquement le CDN
ensuite pour ta vue vu mais la class a ton body, <body class="tundra">
mais comme c'est moche tu peux rajouter la ligne suivant dans la condition
<script type="text/javascript">dojo.addOnLoad(function(){dojo.addClass(dojo.body(),"tundra");});</script>
je te conseil aussi de prendre la derniere version
->setCdnVersion('1.3.2')
ps : parseonLoad n'est pas obligatoire
Hors ligne
Merci pour ta réponse, mais quelques petites précisions me seraient utiles.
Je ne comprend pas bien ce concept de CDN, à quel moment est-il apellé? car là je ne vois pas où je l'appelle et comment ensuite, je peux vérifier que dojo fonctionne correctement sans rien coder (activer le debbuger par exemple).
Merci encore
Hors ligne
t'as deux manieres de recuperer le framework,
soit tu le telecharge entierement, et tu va le chercher en local ce que tu fait avec setLocalPath('/js/dojo/dojo.js')
il va cherche le fichier js dans /js/dojo/dojo.js ca qui te fera dans ton header
<script type="text/javascript" src="/js/dojo/dojo.js"></script>
soit tu le telecharge directement du net, ce qui te donnera
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dojo/dojo.xd.js"></script>
tu te retrouve avec un config comme ca
Zend_Dojo::enableView($view); $view->dojo()->setCdnVersion('1.3.2') ->addStyleSheetModule('dijit.themes.tundra');
ensuite si tu veux normalement, dojo devrais aparaitre dans ton code HTML, mais Dojo c'est du javascript je doute que tu puisse faire quelque chose avec le Debugger,
si tu veux voir si ca marche je te conseil de te faire un mini formulaire en activant Dojo sur ton Zend_Form.
ensuite pour ce qui est de la class CSS (tundra), c'est uniqement pour les composants Dijits. Et mon code sert uniquement a faire <body> au lieu de <body class="tundra">
ensuite pour le ParseOnLoad, dojo utilise des attribues html et ducoup c'est pas valide XHTML.
c'est pour quel utilisation ?
Dernière modification par stealth35 (30-08-2009 21:48:04)
Hors ligne
Ok je vais tester ça, le problème est que je sais toujours pas trop où le placer mais je vais essayer! Pour le debbuger je parlais en fait de celui intégré à Dojo. Si il s'affiche c'est que Dojo est forcément activé ^^. Merci
Hors ligne
Pages: 1