Dans cette discussion, j'exposais mes tentatives avec un autocomplete en Zend_Dojo mais sans succès.
J'essaie avec Jquery qui semble bien plus simple à mettre en oeuvre mais j'ai un message d'erreur quand je tape une première lettre.
Je précise de suite que j'ai aussi dans ce formulaire un ZendX_JQuery_Form_Element_DatePicker qui fonctionne parfaitement, ainsi qu'un autre ZendX_JQuery_Form_Element_AutoComplete avec un jeu de données plus petit que je peux charger en même temps que le formulaire et qui fonctionne très bien lui aussi.
Dans le formulaire, j'ai ceci :
Dans le modèle Commune.php, j'ai créé cette fonction :
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 // Celui 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 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', 'minChars' => 1));
Dans le contrôleur, j'ai créé cette fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function getCommunesParDebutNom($debut) { $debut = $debut.'%'; $sql = " SELECT cmn_id, cmn_nom FROM tr_commune_cmn WHERE cmn_nom LIKE :debut "; return $this->_db->fetchAll($sql, array('debut' => $debut)); }
Le formulaire s'affiche rapidement mais j'obtiens l'erreur suivante quand je tape une première lettre dans la zone :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public function recherchecommunesAction() { $request = $this->getRequest(); $debut = $request->getParam('term'); $commune = new Application_Model_DbTable_Commune(); $result = $commune->getCommunesParDebutNom($debut); $this->_helper->autoComplete($result);
Je sens que je ne suis pas loin de la solution mais...http://localhost/stagmas/public/accu...ommunes?term=L 500 Internal Server Error
Action Helper by name AutoComplete not found.
Partager