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 :
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 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
    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));
    }
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
    public function recherchecommunesAction()
    {
        $request = $this->getRequest();
        $debut = $request->getParam('term');
 
        $commune = new Application_Model_DbTable_Commune();
        $result = $commune->getCommunesParDebutNom($debut);
        $this->_helper->autoComplete($result);
Le formulaire s'affiche rapidement mais j'obtiens l'erreur suivante quand je tape une première lettre dans la zone :
http://localhost/stagmas/public/accu...ommunes?term=L 500 Internal Server Error

Action Helper by name AutoComplete not found.
Je sens que je ne suis pas loin de la solution mais...