Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-03-2010 18:51:36

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

[Zend Dojo]Problème avec auto-complétion

Bonjour,

j'ai un sérieux problème avec Zend Dojo et je souhaite votre aide ,bon je réalise un formulaire d'auto-complétion avec zend_dojo,zend_form et la base de donnée avec Doctrine.

Voilà mon contrôleur :

Code:

class DojoController extends Zend_Controller_Action
{

    public function searchcityAction()
    {    
        $form = new Searchformcity();
        if ($this->_request->isPost())
        {
             if ($form->isValid($_POST))
             {
             $userId = $this->_getParam('userId');
             } else
             {
             $form->populate($_POST);
             $this->view->form = $form;
             }

       } else
       {
             $this->view->form = $form;  
       }
    }


 public function typelistAction()
    {

    $language= new LanguesService();
    $lng= $language->getIdLanguage();

    $query = Doctrine_Query::create()
             ->select('c.city_name')
             ->from ('City c')
             ->where('c.lng_id=?',$lng);

    $result= $query->execute();
    $data = new Zend_Dojo_Data('cit_id', $result);
    echo $data->toJson();
    exit;
    }

}

et Voilà le fotmulaire :

Code:

class Searchformtype extends Zend_Form{

    public function init(){

        $form = new Zend_Form();

        $typeId = new Zend_Dojo_Form_Element_FilteringSelect('typeId');
        $typeId->setLabel('Sélectionner votre choix :')
               ->setAutoComplete(true)
               ->setStoreId('userStore')
               ->setStoreType('dojo.data.ItemFileReadStore')
               ->setDijitParam("style",'width:400px')
           ->setDijitParam("hasDownArrow",'true')
               ->setStoreParams(array('url'=>'typelist'))
               ->setAttrib("searchAttr", "city_name")
               ->setRequired(true);

        $submit = $form->createElement('submit', 'chercher');
        $this->addElements(array($typeId, $submit));
        }
}

Jusqu'à maintenant tout marche bien quand je tape l'adresse  : http://localhost/Projet/public/fr/dojo/searchcity, il m'affiche  tout correctement.

Ce que je cherche vraiment c'est d'avoir une liste des villes pour chaque pays sachant que j'ai toutes les villes dans le même tableau dans la BD et je classe mes villes selon le pays par une référence c'est l'identificateur "cit_typ_id".

Ce que je souhaite c'est que la liste des villes change avec le type de la page(pays) c'est à dire :

pour l'adresse : http://localhost/Projet/public/fr/dojo/searchcity/1  j'aurai toutes les villes de la France,


pour l'adresse : http://localhost/Projet/public/fr/dojo/searchcity/2  j'aurai toutes les villes de l'Espagne,

......

Pour mettre cette solution j'ai mis un router.ini comme suit :

Code:

[production]

....

routes.searchcity.route = "/:language/:controller/:action/:cittypid"
routes.searchcity.defaults.controller = dojo
routes.searchcity.defaults.action = searchcity
routes.searchcity.defaults.language = $local

Et je récupère mon cit_typ_id par (qui me retourne l'identificateur qui est tapé dans l'addresse) :

Code:

$cittypid= $this->_getParam('cittypid');

Alors maintenant j'utilise ce résultat  dans ma requête au contrôleur comme suit :

Code:

 public function typelistAction()
    {

    $cittypid= $this->_getParam('cittypid');
    
    $language= new LanguesService();
    $lng= $language->getIdLanguage();

    $query = Doctrine_Query::create()
             ->select('c.city_name')
             ->from ('City c')
             ->where('c.lng_id=?',$lng)

           ->andwhere('c.cit_typ_id=?',$cittypid);

    $result= $query->execute();
    $data = new Zend_Dojo_Data('cit_id', $result);
    echo $data->toJson();
    exit;
    }

Alors voilà mon problème,quand je tape l'adresse  http://localhost/Projet/public/fr/dojo/searchcity/1 ,pour que j'aurai la liste des villes pour la France dans l'auto-complétion,il m'affiche rien dans le formulaire.

J'ai essayé directement   avec l'adresse http://localhost/Projet/public/fr/dojo/typelist/1 et il m'affiche les villes de la France en format JSON et cela veut dire que tout marche bien au niveau de la base donnée et les requêtes...

Je pense que j'utilise deux actions,l'une je déclare le cit_typ_id(searchcity) et l'autre(typelisr) récupère cet identificateur pour l'utiliser dans la requête pour tirer les villes selon le pays ,la chose qui ne se passe pas au même  temps et c'est pour cela c'est impossible,j'ai testé Zend_registre  pour récupérer mon cit_typ_id mais je tombe dans la même chose.

Je résume tout par une question : comment je peux utiliser un id dans l'url d'une action et je le récupére au même temps dans une autre?

J'ai expliqué en détail pour que le problème soit claire et avoir une solution que vraiment je ne trouve plus comment...

A+.Nll

Dernière modification par elec (08-03-2010 18:59:32)

Hors ligne

 

#2 09-03-2010 08:26:49

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: [Zend Dojo]Problème avec auto-complétion


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#3 09-03-2010 14:13:34

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

Re: [Zend Dojo]Problème avec auto-complétion

Bonjour,

Merci Grummfy,mais vraiment je n'ai pas arrivé à comprendre très bien la solution et comment je peux avoir l'identificateur de la page pour que je puisse changer la liste dans l'auto-complétion de la base de donnée...

Ma question aussi c'est qu'il est le rôle principalement du javascript?

A+,Nll

Hors ligne

 

#4 10-03-2010 08:42:59

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: [Zend Dojo]Problème avec auto-complétion

tu veux que lorsque sur ton formulaire on change de pays l'auto-complétion des ville change?
Dans ce cas, lorsque tu as changé de pays  soit tu recharges la page et tu changes la liste des ville (enfin les paramètre dans le formulaire dojo pour qu'il ai a une autre adresse. Soit lors duj changement de pays, avec du javascript, tu change l'adresse de recherche des villes (ce que je propose) : pas de rechargement de page, mais un changement d'url pour l'auto-complétion ...


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#5 12-03-2010 17:05:51

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

Re: [Zend Dojo]Problème avec auto-complétion

Bonjour,

Je comprend votre solution mais c'est plus ce que je cherche,parce que tout simplement je veux changer la liste selon l'identificateur cela veut dire que je prend l'identificateur selon l'url puis l'appliquer directement dans ma requête pour la base de donnée pour enfin tirer ma liste correcte alors non pas une liste déroulante qui change l'url....Enfin cela reste un problème a mon avis sans solution d'après plusieurs jours.

A+.Nll

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