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 02/09/2011, 11h18   #1
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
Par défaut préremplir un champ d'un formulaire avec une bdd ?

Bonjour ,

j'aimerais crée un formulaire couplé avec une base de donnée.

la personne doit saisir un champ commune avec une aide à la saisie,

Quel class,plugin.. je dois utiliser afin de préremplir ce champs à partir de 3 lettres ?

faut t'-il

-1 utiliser JQUERY, peut t'-il attaquer la base de donner et rechercher suggérer une liste de commune

-2 utiliser du Javascript (je crois que c'est ajax),

-3 dans Zend il y a une class pour nous facilité la vie pour faire ce genre de formulaire.

avant de commencer tête baisser j'aimerais savoir quel outils je dispose pour arriver a faire cela.

merci de votre réponse
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 11h28   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Il te faut utiliser autocomplete de jquery, d'ailleurs celui ci est implémenté dans zend dans la library ZendX qui est en extra dans le full package.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 15h44   #3
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
merci sh4, en effet avec jquery c'est plus facile, par contre je suis le tuto de zendcaste
et il y a une écriture que je comprend pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
   $filter = function($city) use ($term)
       {
           if(stristr($city, $term))
           {    
               return true;
           }
           else
           {
               return false;
           }
 
       };
je ne comprend pas cette écriture pour function ($city) use ($term)??
evidament dans netbeans cette ligne est marqué en rouge ?
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 17h13   #4
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
D’après la description du http://blog.pascal-martin.fr/post/ph...res-et-lambdas
Citation:
Use permet d’importer des variables externes, issues de l’espace de noms « global », au sein de la fonction lambda.
Bien sur tu pourra créer ton propre traitement pour récupérer les données
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 18h22   #5
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
merci de m'avoir éclaire,
du coup netbeans souligne la function anonyme et dit que cette ligne n'est pas compatible,
je pensais que c'était une erreur de syntaxe, (poutant j'ai netbean 7.0.1 , la derniere version)
du coup je n'ai pas besoin de me préocuper de cette erreur?
je travaille avec LAMP un version de php5.3.5
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 18h41   #6
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Eclipse helios ne la souligne pas.
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 19h44   #7
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
j'ai testé cela fonctionne

par contre à cette ligne, a quoi peut bien servir l'argument "ac", j'ai essayer de mettre 'toto' cela fonctionne aussi ?

Code :
1
2
 
        $this->view->autocompleteElement  = new ZendX_JQuery_Form_Element_AutoComplete('ac');
j'aurai aussi une autre question,

lorqu'on ouvre les sources de la page web, on voit toutes les donnée comme ceci par exemple
Code :
1
2
3
4
 
$(document).ready(function() {
    $("#ac").autocomplete({"source":["lyon","paris","marseille"]});
});
ici la liste que j'ai testé est minuscule, mais s'il par exemple on attaque une base de donnée de 50000 noms par exemple , qu'on recherche une référence qui contient "a" et qu'il y a 10000 résultats, on vas tous les afficher ??
cela va pas faire ramer le serveur ?

si cela n'engendre pas de perte de performance , je vais essayer directement de charger le résultat de la requête qui demande toutes les noms qui contiennent "a",

par contre si cela engendre un grosse perte de performance , sur les résultat des requête j'avais penser par exemple, d' exiger qu'on tape au moin 3 lettres , je pense que que cela réduire drastiquement les résultat, une fois récupérer , les mettrais dans un array, et je ferais la recherche dessus.

que pensez vous entres ces 2 solutions ??
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 20h07   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
ac ici correspond a l id sur l input le auto complete fonctionne
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 20h25   #9
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
ah oui j'avais pas pensé
Code :
1
2
 
    <dt id="ac-label"><label for="ac" class="optional">Autocomplete</label></dt>
dans la source on le vois bien
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 20h30   #10
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Et si tu récupère d'une base de donné tu dois faire une limit pour ne pas avoir beaucoup de réponse par exemple 10
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 22h07   #11
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
c'est vrai que ta solution est plus pratique,
j'ai trouvé le tuto de cinephile
http://blog.developpez.com/cinephil/...-une/#more9853

il y a un truc que je ne comprend pas
lorsque j'exécute le controlleur qui contient cela
Code :
1
2
 
                   $this->_helper->json(array_values($listecommunes));
le navigateur me demande de télécharger un fichier json.part ?? pouquoi il ne l'execute pas

j'ai ouvet le contenu et cella corresponde au premier élément de la liste communes
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 23h17   #12
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Cela te permet d encoder ton resultat en json et celui ci ne peut etre vu directement via le navigateur mais ne t inquietes pas la recuperation coté appel ajax sera bon.

Tu peux mettre une condition pour l environnemen development en cas que ce ne soit pas une requete ajax et faire un zend debug au lieu du json
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 23h26   #13
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
j'ai donc fait comme tu me l'a dit, voici le script que j'ai mis, pour le moment, j'essaye pas à pas de comprendre et de faire fonctionner l'ensemble du tuto

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    public function indexAction()
    {
                $commune = new Application_Model_DbTable_Cp();
               $resultat = $commune->getCommunesParDebutNom('DARD');
               $listecommunes = array();
               foreach($resultat as $cmn)
               {
                   $listecommunes[$cmn['id_commune']]=$cmn['id_commune'];
                   echo $cmn['id_commune'];
                   Zend_Debug::dump(array_values($listecommunes));
               }
    }
}
si par exemple je veux qu'avoir 10 résultat , ce code est t'il bon ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
 public function getCommunesParDebutNom($debut) 
  { 
    $debut = $debut.'%'; 
    $sql = " 
      SELECT id_commune, code_postal, nom 
      FROM communes  
      WHERE nom LIKE :debut  LIMIT 10
    "; 
    $communestrouvees = $this->_db->fetchAll($sql, array('debut' => $debut)); 
 
    return $communestrouvees; 
  }
}
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 10h22   #14
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Un conseil pense toujours a utiliser les quoteIdentifier ça te permettra de pouvoir changer de SGBD plus facilement.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 12h49   #15
Membre régulier
 
Avatar de Alcide_
 
Homme
Étudiant
Inscription : juin 2008
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 70
Points : 78
Points : 78
Sinon, pour élargir les pistes, DojoToolkit est très bien implémenté dans Zend et te permet assez facilement de faire de l'auto-complete...
une piste : tuto zend+dojo
Voilà c'est fait, on a aussi parlé de Dojo !
Alcide_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 13h30   #16
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
j'ai trouvé pouquoi il se comporte étrangement avec firelfox, dans le tuto de zencast il met ceci, un copier coller d'une source n'est pas suffisant il faut encore et encore vérfier
Code :
1
2
3
 
        $this->view->autocompleteElement->setjQueryParam(
                'source', '/index/city');
j'ai donc regarder mon code source hml (a force de tourner en rond durant toute la matiner )
Code :
1
2
3
4
 
$(document).ready(function() {
    $("#ac").autocomplete({"source":"\/index\/city"});
});
en regardant cela je me dit c'est vraiment bizzard le chemin avec "/\"

donc j'ai enlever le slash de index "/index", et la miracle, mon autcompletion fonctionne très bien, et ce firefox ne me demande plus de télécharger ce fichier json
comme quoi il ne faut jamais se fier au fichier source du tuto

je pense que peut être l'auteur de zendcast a utliser une ancienne version ou peut être que c'est pas sous linux mais sous mac

par contre il y a un truc que je ne vois pas ou se trouve "term"
Code :
1
2
 
       $results =  Application_Model_DbTable_Cp::search($this->_getParam('term'));
comment on peut écrire _getParam('term');

c'est un attribut term ??
Code :
1
2
3
4
5
6
7
8
9
10
 
class model
{
$term;// dans ma class model $term n'est pas déclarer ? en tant qu'attribut ?
 
public function getparm()
{
$this->term = "??";
}
}
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 16h31   #17
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Premièrement le \ n'a aucun rapport avec mac ou linux d'ailleurs l'interprétation est identique la seule différence qu'il peut y avoir à ce niveau c'est que sous mac tu ne peux pas avoir deux fichier du style Fichier.php et fichier.php car c'est considérer comme le même fichier tandis que sous linux ça fonctionne.

En suite tu dis que c'est une erreur, et là c'est toi qui n'a pas respecté le tuto, tu crois que le $baseurl ne sert à rien ? Donc à toi de revoir cette partie et de corriger ton code.

En ce qui concerne term, ce paramètre correspond à ce qui est envoyé par défaut par auto complète et qui doit être récupérer du coté du fichier indiqué en source.

Pour le récupérer dans une action c'est :
$this->_request->getParam('term');

il est également possible de changer de nom de paramètre
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 17h30   #18
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
Code :
1
2
 
là c'est toi qui n'a pas respecté le tuto,
en fait je n'ai rien fait j'ai juste télécharger le tuto de zend caste et je l'ai executer(bien sur j'avais tous mélanger entre ces 2 tutos, donc j'ai décider de tous recommencer et de faire fonctionner celui-ci )

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
 
<?php
 
class IndexController extends Zend_Controller_Action
{
 
    public function init()
    {
        $this->view->addHelperPath(
                'ZendX/JQuery/View/Helper'
                ,'ZendX_JQuery_View_Helper');
    }
    public function indexAction()
    {
        $this->view->autocompleteElement = new ZendX_JQuery_Form_Element_AutoComplete('ac');
        $this->view->autocompleteElement->setLabel('Autocomplete');
        $this->view->autocompleteElement->http://code.google.com/p/zendcasts/source/browse/trunk/zc59-autocomplete-with-zendx-jquery/application/controllers/IndexController.phpsetJQueryParam(
                'source', '/index/city');
    }
    public function cityAction()
    {
        $results = Model_City::search($this->_getParam('term'));
        $this->_helper->json(array_values($results));
    }
 
}

il y a bien un slash avant l'index
voici le lien du code
http://code.google.com/p/zendcasts/s...Controller.php

Bon maintenant que ce tuto fonctionne je vais me concentrer sur le tuto de cinePhile, je vais essayer de ne pas tous mélanger.

j'essaye d'aller pas à pas donc mon premier but est d'afficher juste la zone de saisie de la commune donc dans mon controller j'ai ceci
Code :
1
2
3
4
5
6
 
    public function indexAction()
    {
        $form = new Application_Form_Commune();
        $this->view->form=$form;
    }
voici donc le formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
 
class Application_Form_Commune extends ZendX_JQuery_Form
{
    public function init()
    {
        $this->setName('commune');
        $this->setMethod('post');
 
        $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();//pointe sur ..../public
 
       $id_commune = new ZendX_JQuery_Form_Element_AutoComplete('id_commune');
       $id_commune->setLabel('recherche une commune')
               ->setRequired(false)
               ->setFilters(array('StripTags'))
               ->setJQueryParam('autoFille',true)
               ->setJQueryParams(array('source'=>$baseUrl.'/index/recherchecommunes'));
    }
}
et voici ma vu index.php (pour le moment je ne respecte l'emplacement des fichiers, je met tous dans l'index)

donc j'ai fait avant de crée le formulaire
Code :
1
2
 
zf create form commune
[code]

voici la vu index.phtml
Code :
1
2
3
4
5
 
<h1>recherche commune</h1>
<?php
echo $this->form;
?>
ici il y a juste le titre qui est afficher j'ai pas la zone de saisie

j'essaye donc de savoir si mon formulaire a bien été envoyer
Code :
1
2
3
4
5
 
<h1>recherche commune</h1>
<?php
var_dump($this->form);
?>
j'ai quelque chose
Code :
1
2
 
object(Application_Form_Commune)#30 (27) { ["_attribs":protected]=> array(2) { ["name"]=> string(7) "commune" ["method"]=> string(4) "post" } ["_decorators":protected]=> array(3) { ["FormElements"]=> array(2) { ["decorator"]=> string(12) "FormElements" ["options"]=> NULL } ["HtmlTag"]=> array(2) { ["decorator"]=> string(7) "HtmlTag" ["options"]=> array(2) { ["tag"]=> string(2) "dl" ["class"]=> string(9) "zend_form" } } ["Form"]=> array(2) { ["decorator"]=> string(4) "Form" ["options"]=> NULL } } ["_defaultDisplayGroupClass":protected]=> string(22) "Zend_Form_DisplayGroup" ["_description":protected]=> NULL ["_disableLoadDefaultDecorators":protected]=> bool(false) ["_displayGroupPrefixPaths":protected]=> array(1) { [0]=> array(2) { ["prefix"]=> string(27) "ZendX_JQuery_Form_Decorator" ["path"]=> string(27) "ZendX/JQuery/Form/Decorator" } } ["_displayGroups":protected]=> array(0) { } ["_elementDecorators":protected]=> NULL ["_elementPrefixPaths":protected]=> array(1) { [0]=> array(3) { ["prefix"]=> string(27) "ZendX_JQuery_Form_Decorator" ["path"]=> string(27) "ZendX/JQuery/Form/Decorator" ["type"]=> string(9) "decorator" } } ["_elements":protected]=> array(0) { } ["_elementsBelongTo":protected]=> NULL ["_errorMessages":protected]=> array(0) { } ["_errorsExist":protected]=> bool(false) ["_errorsForced":protected]=> bool(false) ["_formOrder":protected]=> NULL ["_isArray":protected]=> bool(false) ["_legend":protected]=> NULL ["_loaders":protected]=> array(2) { ["DECORATOR"]=> object(Zend_Loader_PluginLoader)#31 (4) { ["_loadedPluginPaths":protected]=> array(0) { } ["_loadedPlugins":protected]=> array(0) { } ["_prefixToPaths":protected]=> array(2) { ["Zend_Form_Decorator_"]=> array(1) { [0]=> string(20) "Zend/Form/Decorator/" } ["ZendX_JQuery_Form_Decorator_"]=> array(1) { [0]=> string(28) "ZendX/JQuery/Form/Decorator/" } } ["_useStaticRegistry":protected]=> NULL } ["ELEMENT"]=> object(Zend_Loader_PluginLoader)#32 (4) { ["_loadedPluginPaths":protected]=> array(0) { } ["_loadedPlugins":protected]=> array(0) { } ["_prefixToPaths":protected]=> array(2) { ["Zend_Form_Element_"]=> array(1) { [0]=> string(18) "Zend/Form/Element/" } ["ZendX_JQuery_Form_Element_"]=> array(1) { [0]=> string(26) "ZendX/JQuery/Form/Element/" } } ["_useStaticRegistry":protected]=> NULL } } ["_methods":protected]=> array(4) { [0]=> string(6) "delete" [1]=> string(3) "get" [2]=> string(4) "post" [3]=> string(3) "put" } ["_order":protected]=> array(0) { } ["_orderUpdated":protected]=> bool(false) ["_subFormPrefixPaths":protected]=> array(0) { } ["_subForms":protected]=> array(0) { } ["_translator":protected]=> NULL ["_translatorDisabled":protected]=> bool(false) ["_view":protected]=> NULL ["_isRendered":protected]=> bool(false) }
donc je me suis dit la j'ai bien mon formulaire qui est envoyer à la vu
jai rajouter ceci a la vu
Code :
1
2
3
 
<?php 
echo $this->datePicker('db','',array());?>
bon la je vois bien le calendrier

en écrivant ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
 
//configuration.ini
autoloaderNamespaces[] = "ZendX"
 
//methode ini dans controlleur/index
    public function init()
    {
        $this->view->addHelperPath(
                'ZendX/JQuery/View/Helper'
                ,'ZendX_JQuery_View_Helper'); 
    }
cela remplace t'il ce boostrap??
Code :
1
2
3
4
5
6
7
8
9
10
 
  protected function _initJQuery() 
  { 
    $this->bootstrap('view'); 
    $view = $this->getResource('view'); 
    $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper'); 
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 
  }
je te remercie encore de réponde a mon poste, cela me permet d'avancer pas à pas, je suis encore débutant , et c'est pas facile d'apprendre tout seul.

keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 18h49   #19
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Code :
1
2
3
4
5
6
7
8
9
10
 
  protected function _initJQuery() 
  { 
    $this->bootstrap('view'); 
    $view = $this->getResource('view'); 
    $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper'); 
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 
  }

Si cela fonctionne laisse ainsi, il me semble que j'ai quelque chose de plus ou moins similaire.
ZendX est intégrer à Zend pas besoin de déclarer la librairie.

Par contre pour ce qui concerne ton autocomplete je te conseille de le construire dans ton form commune de la façon suivante :

Code :
1
2
3
4
5
 
$element = new ZendX_JQuery_Form_Element_AutoComplete("id_commune");
				$element->setJQueryParams(array('source'	=> 'ta source' 
												'minLength' => 3));
$this->addElement($element);
Je ne suis pas sur que cela fonctionne directe car chez moi je fais de la grosse gestion dessous avec des Zend_Json_Expr() pour source select et change
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 20h38   #20
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
maintenant cela fonctionne

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
    public function rechcommuneAction()
    {
         $request = $this->getRequest();
        $debut = $request->getParam('term');
        $commune = new Application_Model_DbTable_Cp();
        $result= $commune->getCommunesParDebutNom($debut);
        $listevilles = array();
         foreach ($result as $commune)
         {
             $nom[]= $commune['nom'];
 
         }
 
    $this->_helper->json(array_values($nom));
 
    }
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 <?php
 
class Application_Form_Commune extends ZendX_JQuery_Form 
{
    public function init()
    {
 $commune = new ZendX_JQuery_Form_Element_AutoComplete('commune');
        $commune ->setLabel('commune :')
                                 ->setRequired(false)
                                  ->setJQueryParams(array('source'    => 'index/rechcommune',
                                    'minLength' => 3,
))
            ;
        $this->addElement($commune);
 
    }
}
j'ai essayer de rajouter
Code :
1
2
 
$commune->addFilter('UpperCase)
mais il me dit
Code :
1
2
 
Warning: Exception caught by form: Plugin by name 'UpperCase' was not found in the registry; used paths: Zend_Filter_:
j'en ai besoin les communes sont en majuscule
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h40.


 
 
 
 
Partenaires

Hébergement Web