Приветствую!
Подскажите, как вывести в выпадающем списке текстового поля элементы массива, который был получен
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 дереве где то лежит или в памяти?