Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/03/2011, 10h27   #1
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 997
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 997
Points : 18 256
Points : 18 256
Envoyer un message via MSN à CinePhil
Par défaut Source de ZendX_Jquery_Autocomplete mal formée ?

Bonjour,
Mon problème d'autocomplete sur les communes n'est toujours pas résolu, malgré des centaines de lectures de mes messages ici ou sur les forums français et anglais de Zend_Framework !

J'en découvre un autre que je vous décris ci-dessous...

Soit un formulaire avec deux ZendX_JQuery_Form_Element_AutoComplete :
Code :
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
        // Établissement où se déroule le stage
        $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;
        }
 
        $stg_id_etablissement = new ZendX_JQuery_Form_Element_AutoComplete('stg_id_etablissement');
        $stg_id_etablissement
            ->setLabel('Établissement où se déroule le stage')
            ->setRequired(false)
            ->setFilters(array('StripTags'))
            ->setJQueryParams(array('source' => $liste_etablissements))
            ->setValue(''); 
 
        // Conseiller pédagogique
        $personne = new Application_Model_DbTable_Personne();
        $result = $personne->listeConseillers();
        $liste_conseillers = array();
        $liste_conseillers[0] = '';
        foreach($result as $conseiller)
        {
            $liste_conseillers[$conseiller['prs_id']] = $conseiller['prs_nom'].' '.$conseiller['prs_prenom'];
        }
 
        $stg_id_conseiller_pedago = new ZendX_JQuery_Form_Element_AutoComplete('stg_id_conseiller_pedago');
        $stg_id_conseiller_pedago
            ->setLabel('Conseiller pédagogique')
            ->setRequired(false)
            ->setFilters(array('StripTags'))
            ->setJQueryParams(array('source' => $liste_conseillers))
            ->setValue('');
Les deux sont fabriqués sur le même principe.

L'autocomplete sur le choix de l'établissement fonctionne en affichant la liste des possibles dès la frappe du premier caractère, l'autre n'affiche rien et se comporte comme une simple zone de texte !

J'ai remarqué une différence dans le code HTML produit :
Code :
1
2
    $("#stg_id_etablissement").autocomplete({"source":["","Universit\u00e9 Paul Sabatier","EPLEA Capou"]});  
 $("#stg_id_conseiller_pedago").autocomplete({"source":{"0":"","4":"Lema\u00eetre Jean","3":"P\u00e9dago Alfred"}});
Pour l'établissement, la source commence par un crochet [ alors que pour le conseiller pédagogique elle commence par une accolade {.
De plus, les identifiants des conseillers pédagogiques sont présents alors qu'il n'y a que le nom des établissements.

Serait-ce dû au fait que j'utilise fetchAll pour les établissements et une fonction basée sur une requête pour les conseillers pédagogiques ?

Pourtant, les deux tableaux envoyés en paramètres aux deux autocomplete ont la même structure :
Citation:
Établissements :
array(3) {
[0] => string(0) ""
[1] => string(25) "Université Paul Sabatier"
[2] => string(11) "EPLEA Capou"
}
Conseillers pédagogiques :
array(3) {
[0] => string(0) ""
[4] => string(14) "Lemaître Jean"
[3] => string(14) "Pédago Alfred"
}
EDIT :
Je viens de faire une fonction pour limiter la liste des établissements aux lycées agricoles. Le tableau envoyé à l'autocomplete est maintenant celui-ci :
Citation:
array(2) {
[0] => string(0) ""
[2] => string(11) "EPLEA Capou"
}
Et ZendX_Jquery génère cette fois cette structure dans le HTML de la page :
Code :
$("#stg_id_etablissement").autocomplete({"source":{"0":"","2":"EPLEA Capou"}});
La source commence maintenant par une accolade et l'autocomplete ne fonctionne plus !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h36.


 
 
 
 
Partenaires

Hébergement Web