2011-02-24 2 views
0

j'ai ce widget:sfWidgetFormJQueryAutocompleter: comment récupérer les clés des éléments sélectionnés?

$this->widgetSchema['user'] = new sfWidgetFormChoice(array(
    'choices'   => array(), 
    'renderer_class' => 'sfWidgetFormJQueryAutocompleter', 
    'renderer_options' => array('url' => 'autocomplete', 'config' => '{ multiple:true }'), 
)); 

Et c'est la fonction de saisie semi-automatique:

public function executeAutocomplete($request) 
{ 

$this->getResponse()->setContentType('application/json'); 

$q = "%" . $request->getParameter('q') . "%"; 

$limit = $request->getParameter('limit'); 

//Criteria code 

return $this->renderText(json_encode($cli)); 

}

qui renvoie cette (onglet "réponse" à Firebug):

{"17":"John","18":"Ann"} //the numbers are the values in the id field. 

Ensuite, je choisis les deux noms dans l'entrée de saisie semi-automatique de cette façon:

[John, Peter]

Quand je soumets la forme, les getPostParameters() renvoie ceci:

array 
    'example' => 
    array 
     'id' => string '' (length=0) 
     '_csrf_token' => string '388774046d0f5c8b4a3f114ddb15af7b' (length=32) 
     'user' => string '18' (length=2) 
    'autocomplete_example' => 
    array 
     'user' => string 'John, Ann, ' 

Alors, que dois-je faire pour récupérer les id des utilisateurs ?

sf 1.4.

Javier

Répondre

0

Ok, maintenant je comprends comment ce widget works..When vous créez ce genre widget, il crée en fait deux champs: autocomplete_my_field (le champ qui est montré et où vous insérez les données (valeurs des éléments du tableau ) et my_field (un champ masqué, où les clés sont insérées).

Ce widget fonctionne bien lorsque vous insérez seulement un élément, mais lorsque vous insérez plus d'un élément de la clé des éléments sont remplacés (l'identifiant du second e lement écrase l'identifiant du premier, l'identifiant du troisième élément écrase l'identifiant du second , ....), donc vous ne pouvez pas tous les récupérer. Il est donc un bug .. Je pense

EDIT:

peut-être cet extrait est utile http://snippets.symfony-project.org/snippets/from/antitoxic/order_by/popularity. Dans ce snippet tags_list n'est pas un nom occasionnel, c'est le nom du champ généré par symfony qui montre les éléments de l'autre côté de la relation. De cette façon, vous l'écraserez.

Questions connexes