Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-01-2011 14:43:00

CinePhil
Membre
Date d'inscription: 24-03-2010
Messages: 19

[ZF 1.11] JQuery AutoComplete n'affiche pas la liste des possibles

Dans une autre discussion, j'avais essayé avec DOJO et n'y étais pas arrivé. J'essaie maintenant avec JQuery, tel que décrit à la fin de l'autre discussion.

Je sens que je ne suis pas loin de la solution mais ce n'est pas encore ça.

Rappel du but :
Afficher un AutoComplete sur les 36682 communes de France qui se lance à partir du premier caractère tapé. Ces communes sont dans une table MySQL.

Dans le modèle Commune.php :

Code:

    public function getCommunesParDebutNom($debut)
    {
        $debut = $debut.'%';
        $sql = "
            SELECT cmn_id, cmn_nom 
            FROM tr_commune_cmn 
            WHERE cmn_nom LIKE :debut 
        ";
        $communestrouvees = $this->_db->fetchAll($sql, array('debut' => $debut));
        
        return $communestrouvees;
    }

Dans le formulaire InfosPerso.php :

Code:

// Un autocomplete qui fonctionne
        $etablissement = new Application_Model_DbTable_Etablissement();
        $result = $etablissement->fetchAll();
        $liste_etablissements = array();
        $liste_etablissements[0] = '';
        foreach($result as $etb)
        {
            $liste_etablissements[$etb->etb_id] = $etb->etb_nom;
        }
        
        $etb_id = new ZendX_JQuery_Form_Element_AutoComplete('etb_id');
        $etb_id
            ->setLabel('Nom')
            ->setRequired(false)
            ->setFilters(array('StripTags'))
            ->setJQueryParams(array('source' => $liste_etablissements)); 

// Celui sur les communes qui pose problème
        $id_commune_etablissement = new ZendX_JQuery_Form_Element_AutoComplete('id_commune_etablissement');
        $id_commune_etablissement
            ->setLabel('Commune')
            ->setRequired(false)
            ->setFilters(array('StripTags'))
            ->setJQueryParams(array('url' => $baseurl.'/accueiletudiant/recherchecommunes'));

Dans le contrôleur, la fonction pour alimenter l'AutoComplete des communes :

Code:

    public function recherchecommunesAction()
    {
        $request = $this->getRequest();
        $debut = $request->getParam('term');
        
        $commune = new Application_Model_DbTable_Commune();
        $result = $commune->getCommunesParDebutNom($debut);
        
        $listecommunes = array();
        $listecommunes[0] = '';
        
        foreach($result as $cmn)
        {
            $listecommunes[$cmn['cmn_id']] = $cmn['cmn_nom'];
        }
        $this->_helper->AutoComplete($listecommunes);
}

Le résultat actuel :
La vue s'affiche assez rapidement et sans erreur.
Lorsque je tape un caractère dans la zone de la commune de l'établissement, Firebug m'affiche le GET et la liste des communes trouvées sans erreur mais cette liste n'apparaît pas dans le formulaire pour aider l'utilisateur. Vu de celui-ci, l'AutoComplete se comporte comme une simple zone de texte.

Que manque t-il ?

Dernière modification par CinePhil (27-01-2011 14:43:16)

Hors ligne

 

#2 01-04-2011 13:56:48

CinePhil
Membre
Date d'inscription: 24-03-2010
Messages: 19

Re: [ZF 1.11] JQuery AutoComplete n'affiche pas la liste des possibles

J'ai fini par y arriver. Bizarrement, c'est une ligne de code que j'avais commentée qui était la bonne !

Bref, voici le code qui fonctionne :

Code:

    public function recherchecommunesAction()
    {
        $request = $this->getRequest();
        $debut = $request->getParam('term');
        
        $commune = new Application_Model_DbTable_Commune();
        $result = $commune->getCommunesParDebutNom($debut);
        
        $listecommunes = array();
        //$listecommunes[0] = '';
        
        foreach($result as $cmn)
        {
            $listecommunes[$cmn['cmn_id']] = $cmn['cmn_nom'];
        }
        $this->_helper->json(array_values($listecommunes));
    }

Avec les 36682 communes françaises, le temps d'affichage des communes possibles quand l'utilisateur saisit une lettre au clavier est inférieur à la demi-seconde. Ce n'est pas encore génial mais je m'en contenterai pour le moment.

J'en ai profité pour écrire un petit tutoriel disponible sur mon blog Developpez.com

Par ailleurs, j'ai carrément ouvert un bug sur cet autre problème détecté cette semaine, toujours avec l'autocompletion en JQuery.

Dernière modification par CinePhil (01-04-2011 15:06:44)

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