IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Utilisation de FilteringSelect [ZF 1.7]


Sujet :

Zend_Form PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut Utilisation de FilteringSelect
    Salut à Tous !
    Je suis entrain de développer une application en utilisant Zend Framework !
    Il se trouve que j'ai un petit soucis au niveau de mon affichage avec Dojo pour un formulaire ! en utilisant le Zend_Dojo_Form_Element_FilteringSelect selon un tutorial je n'arrive pas à afficher mon FilteringSelect :s !! Si quelqu'un peut m'aider
    Voici mon code ainsi que l'apercu de ce que j'ai :
    Bootstrap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ....
    $view = new Zend_View();
    $view->setEncoding('UTF-8');
    Zend_Dojo::enableView($view);
    $view->dojo()
    	 ->addStyleSheetModule('dijit.themes.tundra')
    	 ->setDjConfigOption('usePlainJson',true)
    	 ->enable();
    ....
    Controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
        //Action d'accueil
        public function indexAction()
        {
            $this->view->title = "Gestpresent - Accueil";
        }
     
    	public function congeAction()
    	{
    		$this->view->title = "Gestpresent - Mes Conges";
     
            $form = $this->getForm();
            if ($this->_request->isPost()) {
     
                if ($form->isValid($_POST)) {
                    // Process data
                    // Pass the name and birthday values to the view so that
                    // You can display them in the view
    				$this->view->congeId = $this->_getParam('congeId');
                    $this->view->datedebut = $this->_getParam('datedebut');
    				$this->view->datefin = $this->_getParam('datefin');
                } else {
                   //If form validation fails populate and display the form again
                   $form->populate($_POST);
     
                   $this->view->form = $form;
     
                }
     
            } else {
               //If the request is not post display the form
               $this->view->form = $form;
     
            } 
     
    	}
    	//Liste des types de Congés
    	public function congelistAction()
    	{
    		$db = Zend_Registry::get("db");
            $result = $db->fetchAll("SELECT id_type_conge, libelle_type_conge FROM type_conge");
            $data = new Zend_Dojo_Data('id_type_conge', $result);
            $this->_helper->autoCompleteDojo($data);
    	}
     
     
    	//Création du Formulaire
        public function getForm() 
        { 
            $form = new Zend_Form;
     
    		$congeId= new Zend_Dojo_Form_Element_FilteringSelect('congeId');
    		$congeId->setLabel("Type de conge")
    				->setAutoComplete(true)
    				->setStoreId("congeStore")
    				->setStoreType("dojo.data.ItemFileReadStore")
    		//		->setAttribs(array("dojoType"=>"dojo.data.ItemFileReadStore"))
    		//		->setAttribs(array("dojoType"=>"dijit.form.FilteringSelect"))
    				->setStoreParams(array("url"=>"/index/congelist"))
    				->setAttrib("searchAttr","libelle_type_conge")
    				->setRequired(true); 
     
     
            $datedebut = new Zend_Dojo_Form_Element_DateTextBox('datedebut');
            $datedebut->setLabel('Du :')
      				  ->setAttribs(array("dojoType"=>"dijit.form.DateTextBox"))
    				  ->setRequired(true);
     
            $datefin = new Zend_Dojo_Form_Element_DateTextBox('datefin');
            $datefin->setLabel('Au :')
      				->setAttribs(array("dojoType"=>"dijit.form.DateTextBox"))	
    				->setRequired(true);
     
            $submit = $form->createElement('submit', 'Valider');
     
            $form->addElements(array($congeId, $datedebut, $datefin, $submit,));
     
            return $form;
        }
     
     
    }
    Layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    ...
    <script type="text/javascript" src="../../dojo-1.2.3/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
    <script type="text/javascript">
    dojo.require("dojo.parser");
    dojo.require("dijit.form.FilteringSelect");
    dojo.require("dijit.form.DateTextBox");
    dojo.require("dojo.data.ItemFileReadStore");
    dojo.require("dojox.data.QueryReadStore");
    dojo.require("dijit.Dialog");
    dojo.require("dijit.form.TextBox");
    dojo.require("dijit.form.TimeTextBox");
    dojo.require("dijit.form.Button");
    dojo.require("dijit.form.DateTextBox");
    </script>
    </head>
     
    <body class="tundra">
     
    <div id="content">
     
       <div id="header">
        <?php  echo $this->render('common/header.phtml');  ?>
       </div>
     
       <div id="page">
        <?php echo $this->layout()->content; ?>
        </div>
     
       <div id="footer">
       <?php  echo $this->partial('common/footer.phtml');  ?>
       </div>
     
    </div>
     
    </body>
    </html>
    ...
    View :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h1><a href="<?php echo $this->baseUrl(); ?>">ACCUEIL</a> - MES CONGES</h1>
    <br />
    <br />
    <?php 
        echo $this->form ;
    ?>
    Ainsi que le code source de la page généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <form enctype="application/x-www-form-urlencoded" action="" method="post" name=""><dl class="zend_form">
    <dt><label for="congeId" class="required">Type de conge</label></dt>
    <dd>
    <input options="" searchAttr="libelle_type_conge" listsep="&lt;br /&gt;" id="congeId" name="congeId" value="" type="text"></dd>
    <dt><label for="datedebut" class="required">Du :</label></dt>
    <dd>
    <input dojoType="dijit.form.DateTextBox" id="datedebut" name="datedebut" value="" type="text"></dd>
    <dt><label for="datefin" class="required">Au :</label></dt>
    <dd>
    <input dojoType="dijit.form.DateTextBox" id="datefin" name="datefin" value="" type="text"></dd>
    <dt>&nbsp;</dt><dd>
    <input type="submit" name="Valider" id="Valider" value="Valider"></dd></dl></form>
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    essaie en ajoutant cette ligne dans ton layout (dans la balise head) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->dojo()->addStylesheetModule('dijit.themes.tundra'); ?>
    Tu dois aussi pouvoir supprimer ce que tu as mis manuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript" src="../../dojo-1.2.3/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
    <script type="text/javascript">
    dojo.require("dojo.parser");
    dojo.require("dijit.form.FilteringSelect");
    dojo.require("dijit.form.DateTextBox");
    dojo.require("dojo.data.ItemFileReadStore");
    dojo.require("dojox.data.QueryReadStore");
    dojo.require("dijit.Dialog");
    dojo.require("dijit.form.TextBox");
    dojo.require("dijit.form.TimeTextBox");
    dojo.require("dijit.form.Button");
    dojo.require("dijit.form.DateTextBox");
    </script>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    Bonjour Eusebe !
    Merci pour ta réponse mais en essayant de rajouter la ligne comme tu m'as indiqué et supprimant ce que j'ai mis manuellement j'ai une erreur maintenant :
    Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'Dojo' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;./application/views\helpers/' in C:\wamp\www\WebApp\library\Zend\Loader\PluginLoader.php:386 Stack trace: #0 C:\wamp\www\WebApp\library\Zend\View\Abstract.php(1067): Zend_Loader_PluginLoader->load('Dojo') .....

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Et en ajoutant le chemin vers les aides de vue Dojo dans le bootstrap ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
    Mais normalement, c'est fait par la méthode enableView de la classe Zend_Dojo

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    En Ayant rajouté le chemin vers les aides de vue Dojo dans le bootstrap mes éléments Dojo ne s'affiche plus du tout !
    En effet j'avais au départ des selecteurs de dates également ! mais maintenant ils ont disparu ?!!

    Dans mon bootstrap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $view = new Zend_View();
    Zend_Dojo::enableView($view);
    $view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
    $view->dojo()
    	 ->addStyleSheetModule('dijit.themes.tundra')
    	 ->setLocalPath('./dojo-1.2.3/dojo/dojo.js')
    	 ->setDjConfigOption('usePlainJson',true)
    	 ->setDjConfigOption('parseOnLoad',true)
    	 ->enable(); 
    Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setView($view);
    Dans mon layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title><?php echo $this->escape($this->title); ?></title>
    <link rel="stylesheet" type="text/css" media="screen" href="<?php echo $this->baseUrl();?>/public/css/styles.css" />
    <script type="text/javascript" src="<?php echo $this->baseUrl();?>/public/js/functions.js"></script>
    <style type="text/css" media="screen" >
    	@import "../../dojo-1.2.3/dijit/themes/soria/soria.css";
    	@import "../../dojo-1.2.3/dijit/themes/tundra/tundra.css";
    	@import "../../dojo-1.2.3/dojox/grid/_grid/tundraGrid.css";
    	@import "../../dojo-1.2.3/dojox/grid/_grid/soriaGrid.css";
    	@import "../../dojo-1.2.3/dojox/widget/FisheyeList/FisheyeList.css";
    </style>
    <?php echo $this->dojo()->addStylesheetModule('dijit.themes.tundra'); ?>
    </head>

  6. #6
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Quelle est la structure de ton application (organisation des répertoires) ?
    Et quel est la racine du serveur web ?

    Normalement, tu ne devrais pas avoir besoin de "$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');" puisque c'est fait avec l'instruction "Zend_Dojo::enableView($view);"

    L'aide de vue Dojo permet de générer tout ce qu'il faut comme inclusion JavaScript ou insertion de feuilles de style css.

    Je suis par contre étonné que tu définisse le chemin local de Dojo comme './dojo-1.2.3/dojo/dojo.js' alors que dans tes insertions de css / JavaScript manuelles, tu pointes vers '../../dojo-1.2.3/'...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    Voici la structure de mon application

    WebApp
    [fichiers: .htaccess, index.php (bootstrap)]
    __application
    .........|__config
    .........|__controllers
    .........|__layouts
    .........|__models
    .........|__views
    .........|.........|__helpers
    .........|.........|__scripts
    __dojo-1.2.3
    .........|__dijit
    .........|__dojo
    .........|__dojox
    __library
    .........|__Zend
    __public
    .........|__css
    .........|__images
    .........|__js

  8. #8
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Je devais être fatigué, je n'ai même pas relevé que tu faisais des liens relatifs et pas absolus.

    C'est absolument à proscrire avec une architecture MVC et le framework Zend. imagines une adresse de la forme "//monsite/controleur/action/". avec une adresse relative "../../dojo-1.2.3/dojo/dojo.js", ton navigateur recherchera le fichier dojo.js à l'adresse "//monsite/dojo-1.2.3/dojo/dojo.js", mais si l'adresse devient "//monsite/controleur/action/parametre/valeur/", alors il le recherchera sur "//monsite/controleur/action/dojo-1.2.3/dojo/dojo.js"...

    Donc commence par modifier ton bootstrap en y mettant une adresse absolue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $view->dojo()->setLocalPath('/dojo-1.2.3/dojo/dojo.js')
    Dans ton layout, tu peux supprimer tous les liens vers de fichiers css ou js concernant dojo, ils sont inclus automatiquement par l'aide de vue Dojo.

    Si ça ne fonctionne toujours pas, montres nous le code généré (en entier) lors de l'appel de ta page...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    !!!

    Merci beaucoup Eusebe !!! J'ai fait les modifications et la tout fonctionne correctement !!! !! Encore Merci !!! C'est vrai que je n'ais pas pris en compte cette histoire de chemin relatif et chemin absolu !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo