sfWidgetFormJQueryAutocompleter: как получить ключи выбранных элементов? - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть этот виджет:

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

И это функция автозаполнения:

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

}

, которая возвращает эту вкладку («Ответ» в Firebug):

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

Затем я выбираю оба имени в автозаполнении таким образом:

[Джон, Питер]

Когда я отправляюФорма, метод getPostParameters () возвращает это:

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, ' 

Итак, что мне делать, чтобы получить идентификаторы пользователей?

sf 1.4.

Хавьер

1 Ответ

0 голосов
/ 26 февраля 2011

Хорошо, теперь я понимаю, как работает этот виджет .. Когда вы создаете этот вид виджета, он фактически создает два поля: autocomplete_my_field ( поле, которое отображается и где вы вставляете данные (значения элементы массива) и my_field (скрытое поле, где находятся ключи вставлена).

Этот виджет работает нормально, когда вы вставляете только элемент, но когда вы вставить больше, чем элемент, ключ элементов перезаписан (идентификатор второго элемента перезаписывает идентификатор первого, идентификатор третьего элемента перезаписывает идентификатор второго один, ....), поэтому вы не можете восстановить их все. Так что это ошибка, я думаю ..

EDIT:

возможно, этот фрагмент полезен http://snippets.symfony -project.org / snippets / from / antitoxic / order_by / популярность . В этом фрагменте tags_list не является случайным именем, это имя поля, сгенерированного Symfony, которое показывает элементы другой стороны отношения. Таким образом, вы перезапишите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...