Bonjour,pour travailler avec autocompletion dans mon formulaire je me suis basé sur le lien suivant ici,tout marche très bien pour l'autocompletion mais le contraire pour l'enregistrement du choix à la base de donnée puisque il enregistre le ID au lieu du mot cherché :
mon formulaire :
mon action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $projet= new sfWidgetFormDoctrineJQueryAutocompleter(array( 'url' => 'ajaxprojet.html', 'model' => 'Project', 'method_for_query'=>'' )); $this->setWidget('projet', $projet);
puis dand mon table :
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 public function executeAjax(sfWebRequest $request) { $this->getResponse()->setContentType('application/json'); $choices = array(); foreach($projects= Doctrine::getTable('projects')->getProfilAutocompletion($request->getParameter('q'), $request->getParameter('limit'))->getData() as $p) { $choices[$p->id_projet] = $p->projet; } if($projects != array()) { return $this->renderText(json_encode($choices)); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public function getProfilAutocompletion($q, $limit){ $dq = Doctrine_Query::create() ->select("p.id_projet, p.projet") ->from("Projects p") ->where("p.projet LIKE ?","%".$q."%") ->limit($limit) ->orderBy('p.projet ASC'); return $dq->execute(); }
et dans mon vue :
Alors à la table "projects" il me retourne "id_projet" au champ "pojet"...,je pense que le problème vient de "method_for_query"(en roug en code)!!
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 <tr> <th> Projet : </th> <td> <?php echo $form['projet']->render(array('class' => ($form['projet']->renderError()) ? 'inp-form-error' : 'inp-form')); ?> </td> <td> <?php if ($form['projet']->renderError()): ?> <div class="error-left"></div> <div class="error-inner"><?php echo $form['projet']->renderError(); ?></div> <?php endif; ?> </td> </tr>
Une idée??
Partager