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 Framework PHP Discussion :

dojo autocompletion rien ne ce passe dans la zone de saisie [ZF 1.9]


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut [résolu] dojo autocompletion rien ne ce passe dans la zone de saisie
    Bonjour alors voilà j'ai suivi ce tuto pour pouvoir faire de l'autocomplétion mais rien autocompletion ne marche pas il ne ce passe rien quand je tape dans la zone de saisie.
    En allant sur recherche/userlist j'ai bien mais données qui s'affiche correctement.

    Voici mon code.
    rechercheController
    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
    <?php
    /**
     * Index controller
     *
     * Default controller for this application.
     * 
     * @uses	   Zend_Controller_Action
     * @package	QuickStart
     * @subpackage Controller
     */
    class RechercheController extends Zend_Controller_Action {
    	/**
    	 * The "index" action is the default action for all controllers -- the
    	 * landing page of the site.
    	 *
    	 * Assuming the default route and default router, this action is dispatched
    	 * via the following urls:
    	 * - /
    	 * - /index/
    	 * - /index/index
    	 *
    	 * @return void
    	 */
    	public function indexAction() {
    	$form = $this->getForm();
     
            if ($this->_request->isPost()) {
     
                if ($form->isValid($_POST)) {
                    /*
                     * Process data
                     */
                    $userId = $this->_getParam('userId');
                    //$userId contains the userId input by the user
                } else {
                   $form->populate($_POST);
     
                   $this->view->form = $form;
                }
     
            } else {
     
               $this->view->form = $form;
            }
    	}
     
    	function userlistAction() {
     
    		$dbUtilisateur = new Model_DbTable_Utilisateur();
    		$result = $dbUtilisateur->getDefaultAdapter()->fetchAll("SELECT * FROM utilisateur");
            $data = new Zend_Dojo_Data('id', $result);
            echo $data->toJson();
    		exit;
    	}
     
    	function getForm() {
    		$form = new Zend_Form;
     
     $userId = new Zend_Dojo_Form_Element_FilteringSelect('userId');
     $userId->setLabel('Taper le nom recherche')
                ->setAutoComplete(true)
                ->setStoreId('userStore')
                ->setStoreType('dojo.data.ItemFileReadStore')
                ->setStoreParams(array('url' => 'userlist'))
                ->setAttrib("searchAttr", "nom_prenom")
                ->setRequired(true);
     
     $submit = $form->createElement('submit', 'submit');
     
     $form->addElements(array($userId, $submit));
     
     return $form;
    	}
    }

    boostratp
    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
    <?php
    /**
     * Application bootstrap
     * 
     * @uses	Zend_Application_Bootstrap_Bootstrap
     * @package QuickStart
     */
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    	public function run() {
    		// Cela permet d'avoir la configuration disponible de partout dans notre application
    		Zend_Registry::set('config', new Zend_Config($this->getOptions()));
    		parent::run();
    	}
     
    	/**
    	 * Bootstrap autoloader for application resources
    	 *
    	 * @return Zend_Application_Module_Autoloader
    	 */
    	protected function _initAutoload() {
    		$autoloader = new Zend_Application_Module_Autoloader(array(
    			'namespace' => '',
    			'basePath'  => APPLICATION_PATH,
    		));
    		return $autoloader;
    	}
     
    	protected function _initSession() {
    		// On initialise la session
    		$session = new Zend_Session_Namespace('test_zend', true);
    		return $session;
    	}
     
    	protected function _initView() {
    		// Initialisation de la vue et des helpers de vue
    		$view = new Zend_View();
    		Zend_Dojo::enableView($view);
            $view->dojo()
    		     ->addStyleSheetModule('dijit.themes.tundra')
        	     ->setDjConfigOption('usePlainJson', true)
        	     ->enable();
    				// On ajoute le dossier des helpers
    		$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
    				// On charge l'helper qui va se charger de la vue
    		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
    		$viewRenderer->setView($view);
    		return $view;
    	}
     
    	/**
    	 * Bootstrap the view doctype
    	 *
    	 * @return void
    	 */
    	protected function _initDoctype() {
    		$this->bootstrap('view');
    		$view = $this->getResource('view');
    		$view->doctype('XHTML1_STRICT');
    	}
    }

    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
    <?php echo $this->doctype() ?> <!-- This Line will output the doctype we set inside the bootstrap file -->
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>  
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
      <title> Projet de test du Framework ZEND !</title>
      <!--
          The line below demonstrates usage of the headLink() view helper
          @see http://framework.zend.com/manual/en/zend.view.helpers.html
          -->
      <?php echo $this->headLink()->appendStylesheet('/css/global.css') ?>
      <?php echo $this->dojo();
    echo $this->dojo()->addStylesheetModule('dijit.themes.tundra');
    ?>
    </head>
    <body>
    <div id="welcome">
    	<center style="font-size: 20pt;">
    	Projet de test du <span id="zf-name" style="font-size: 40pt;">Framework ZEND !</span>
    	</center>
    </div>
    	<h1><?php echo $this->title; ?></h1>
     
    <!-- This next call will now include any content that was generated in the
         dispatching of a controllers action (or series of actions).  -->
    <?php echo $this->layout()->content ?>
     
     
     
    <!-- if your application requires it, this would be a great place to put a
         footer for all pages. -->
    </body>
    </html>

    j'ai essayer plusieurs solution comme mettre url a recherche/userlist .
    Jouer avec le layout que j'ai pu trouver sur différent post.

    Mis le code proposer en fion d'article pour la version 1.9.


    En vous remerciant et bonne journée.

  2. #2
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    Bonjour,

    Tu as quelque chose dans ton filteringselect au moins ?

    as-tu lu ce post ? Tu peux peut-être t'en inspirer pour ton souci..

    Moi j'ai vu un truc qui paraissait bizarre, c'est dans ta méthode userlistAction, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $data->toJson();exit;
    Moi j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this -> _helper -> autoCompleteDojo($data);
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut
    Oui j'ai essayé les 2 type de codes car ca été un commentaire de mon tuto pour la 1.9 mais dans les 2 cas rien........

    Non le post je ne l'avais pas lu j'ai commencer à le suivre jusqu'à temps ou ca envoi sur un fichier *.js qui ne me convient pas mon but étant juste d'utiliser DOJO seul.

    Merci pour ton aide


    edit:
    je me suis servi aussi de ce post http://www.developpez.net/forums/d69...lteringselect/ mais rien ne fait.

    Il y a aussi le fait que un coup je voit enabl et un coup disable dans le bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $view->Dojo() ->addStyleSheetModule('dijit.themes.tundra')
    		      -> setDjConfigOption('usePlainJson',true)
    		      -> setDjConfigOption('parseOnLoad', true)
    		      -> disable();

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    Bonjour,

    tu n'as pas besoin du fichier js, j'en ai utilisé un parce que je dois lier 2 Zend_Dojo_Form_Element_FilteringSelect
    Il y a aussi le fait que un coup je voit enabl et un coup disable dans le bootstrap
    Je sais où tu as vu disable mais c'est sûr qu'il faut utiliser enable, pour activer Dojo ! (voir la doc officielle, Exemple 17.7)

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut
    je n'arrice décidement pas a trouver le problème de mon code je vais le reposter au cas ou.


    bootstrap
    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
    		protected function _initView() {
    		// Initialisation de la vue et des helpers de vue
    		$view = new Zend_View();
    		$view->addHelperPath('Zend/Dojo/View/Helper/','Zend_Dojo_View_Helper');
            $view->Dojo() ->addStyleSheetModule('dijit.themes.tundra')
    		      -> setDjConfigOption('usePlainJson',true)
    		      -> setDjConfigOption('parseOnLoad', true)
    		      -> enable();
    				// On ajoute le dossier des helpers
    				// On charge l'helper qui va se charger de la vue
    		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
    		$viewRenderer->setView($view);
    		return $view;
    	}
    	}

    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
    <?php echo $this->doctype() ?> <!-- This Line will output the doctype we set inside the bootstrap file -->
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>  
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
      <title> Projet de test du Framework ZEND !</title>
      <!--
          The line below demonstrates usage of the headLink() view helper
          @see http://framework.zend.com/manual/en/zend.view.helpers.html
          -->
      <?php echo $this->headLink()->appendStylesheet('/css/global.css') ?>
      <?php echo $this -> dojo(); ?><?php echo $this->dojo()->addStylesheetModule('dijit.themes.tundra'); ?>
    </head>
    <body>
    <div id="welcome">
    	<center style="font-size: 20pt;">
    	Projet de test du <span id="zf-name" style="font-size: 40pt;">Framework ZEND !</span>
    	</center>
    </div>
    	<h1><?php echo $this->title; ?></h1>
     
    <!-- This next call will now include any content that was generated in the
         dispatching of a controllers action (or series of actions).  -->
    <?php echo $this->layout()->content ?>
     
     
     
    <!-- if your application requires it, this would be a great place to put a
         footer for all pages. -->
    </body>
    </html>


    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
    83
    84
    85
    86
    87
    88
    89
    90
    <?php
    /**
     * Index controller
     *
     * Default controller for this application.
     * 
     * @uses	   Zend_Controller_Action
     * @package	QuickStart
     * @subpackage Controller
     */
    class RechercheController extends Zend_Controller_Action {
    	/**
    	 * The "index" action is the default action for all controllers -- the
    	 * landing page of the site.
    	 *
    	 * Assuming the default route and default router, this action is dispatched
    	 * via the following urls:
    	 * - /
    	 * - /index/
    	 * - /index/index
    	 *
    	 * @return vonom_prenom
    	 */
    	public function indexAction() {
    	$form = $this->getForm();
     
            if ($this->_request->isPost()) {
     
                if ($form->isValid($_POST)) {
                    /*
                     * Process data
                     */
                    $userId = $this->_getParam('userId');
                    //$userId contains the userId input by the user
                } else {
                   $form->populate($_POST);
     
                   $this->view->form = $form;
                }
     
            } else {
     
               $this->view->form = $form;
            }
    	}
     
    	function userlistAction() {
     
    		$dbUtilisateur = new Model_DbTable_Utilisateur();
    		$result = $dbUtilisateur->getDefaultAdapter()->fetchAll("SELECT * FROM utilisateur");
            $data = new Zend_Dojo_Data('id', $result);
            $this -> _helper -> autoCompleteDojo($data);
    	}
     
    	function getForm() {
    		$form = new Zend_Form;
     
    		$user= new Zend_Form_Element_Hidden('nom_prenom');
     
    		$userId = new Zend_Dojo_Form_Element_FilteringSelect('userId');
    		$userId -> setLabel('choisir un utilisateur :')
                	-> setStoreId('userStore')
    		-> setStoreType('dojo.data.ItemFileReadStore')	
                	-> setAutoComplete(true)
    		-> setStoreParams(array('url' => '/recherche/userlist'))        
    		-> setAttrib('searchAttr', 'nom_prenom');
     
     $submit = $form->createElement('submit', 'submit');
     
     $form->addElements(array($userId, $submit));
     
     return $form;
    	}
     
     
     
    	function resultatAction() {
    		$form = new Form_RechercheForm();
    		$this->view->form = $form;
    		$nom_prenom = $form->getValue('nom_prenom');
    		var_dump($form);
    		$dbSalle = new Model_DbTable_Salle();
    		/*$result = $dbSalle->getDefaultAdapter()->fetchAll("SELECT nom_salle FROM utilisateur,reservation,salle where nom_prenom=".$nom_prenom." and utilisateur.id=reservation.id and reservation.salle_id=salle.salle_id");
    		foreach($result as $resultat)
    		{
    			echo $resultat['nom_salle'].'</br>';
    		}*/
    		var_dump("SELECT nom_salle FROM utilisateur,reservation,salle where nom_prenom=".$nom_prenom." and utilisateur.id=reservation.id and reservation.salle_id=salle.salle_id");
    	}
    }

    de plus la page recherche/userlist me donne un fichier avec ces données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"identifier":"id","items":[{"id":1,"nom_prenom":"DUJARDIN Jean","email":"dujardin.jean@test.fr"},{"id":2,"nom_prenom":null,"email":"departdieu.gerad@test.fr"},{"id":3,"nom_prenom":"KAVANAGH Anthony","email":"kavanagh.anthony@test.fr"},{"id":4,"nom_prenom":"DELON Alain","email":"delon.alain@test.fr"}]}


    En vous remerciant

  6. #6
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    Bonjour,

    dans le bootstrap, tu as oublié de mettre le chemin vers le fichier dojo.js :
    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();
    $view -> addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
    $view -> dojo() -> setLocalPath(BASE_URL . '/js/dojo/dojo.js')
    		      -> addStyleSheetModule('dijit.themes.tundra')
    		      -> setDjConfigOption('usePlainJson',true)
    		      -> setDjConfigOption('parseOnLoad', true)
    		      -> enable();
     
    // Ajout de la vue au ViewRenderer
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
    $viewRenderer -> setView($view);
    Dans le layout, tu peux enlever
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->dojo()->addStylesheetModule('dijit.themes.tundra'); ?>
    et ajouter dans la balise <body> la classe tundra :

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/05/2009, 16h55
  2. text-transform dans une zone de saisie
    Par taroudant dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 13/02/2009, 14h36
  3. curseur non visible dans une zone de saisie
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 31/03/2008, 17h23
  4. Problème pour ajouter un texte automatique dans un zone de saisie de texte
    Par koKoTis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/08/2006, 16h03

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