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 :

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);
mon action :

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));
    }
  }
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
 
 
   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 :

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>
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)!!

Une idée??