@EVOSandru6

Как вывести через CJuiAutoComplete в Yii элементы массива в списке?

Приветствую!

Подскажите, как вывести в выпадающем списке текстового поля элементы массива, который был получен action контроллера в результате поиска?

Так выглядит виджет:
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
               'name'=>'searchbox',
                'value'=>'',
               'source'=>Yii::app()->createUrl('customer/places/autocomplete'),
                'options'=>array(
                           'showAnim'=>'fold',
                            'minLength'=>'1',
                            'select'=>'js:function( event, ui ) {
                                  $("#searchbox").val( ui.item.label );
                                  $("#selectedvalue").val( ui.item.value );
                                  return false;
                             }',
                         ),
                         'htmlOptions'=>array(
                                 // 'autocomplete'=>'off',
                                 'onfocus' => 'js: this.value = null; $("#searchbox").val(null); $("#selectedvalue").val(null);',
                                                    'class' => 'input-xxlarge search-query',
                                                    'placeholder' => "Живой поиск...",
                          ),
             ));


Так выглядит action контроллера:

public function actionAutocomplete($term)
	{
        $query = Places::model()->findallbyattributes( array('name'=>$term));
        $list = array();
        foreach($query as $q)
        {
            $data['value']= $q['id'];
            $data['label']= $q['name'];

            $list[]= $data;
            unset($data);
        }
        echo json_encode($list);
}


Никаких ошибок в консоли нет, запрос отправляется и получает ответ. Но список не выпадает(

Если я меняю:

1. $list[]= $data;

На

2. $list[]= $data['name'];

Только теперь список выпадает, но мне хотелось бы, чтобы name - ы, брались именно из массива
array(array( 'id', 'name' ),array( 'id', 'name' ),array( 'id', 'name' ),array( 'id', 'name' ))
Который формируется в первом варианте.

И еще такой момент - как можно получить доступ к id выделенного name элемента из списка без лишних запросов? Например через js вручную или средствами фреймворка

Переделал вот так:

foreach($model as $item)
        {
            $data['id']= $item['id'];
            $data['value']= $item['name'];
            $list[]= $data;
            unset($data);
        }


Заработало! Только не знаю как id вытащить при выборе пункта в списке( В Dom дереве где то лежит или в памяти?
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
padavan
@padavan
....
'select'=>'js:function( event, ui ) {
// вот тут лежит ID
    ui.item.id    

}',
....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы