Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-08-2009 02:10:22

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Activer Zend_Dojo avec architecture modulaire

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:

Code:

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:

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:

Code:

<?= $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:

Code:

        <?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! ^^


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#2 30-08-2009 17:52:05

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: Activer Zend_Dojo avec architecture modulaire

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

 

#3 30-08-2009 20:35:27

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Re: Activer Zend_Dojo avec architecture modulaire

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


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#4 30-08-2009 21:44:07

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: Activer Zend_Dojo avec architecture modulaire

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

Code:

<script type="text/javascript" src="/js/dojo/dojo.js"></script>

soit tu le telecharge directement du net, ce qui te donnera

Code:

<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

Code:

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

 

#5 30-08-2009 22:45:23

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Re: Activer Zend_Dojo avec architecture modulaire

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


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages