Автозаполнение в yii2

В Yii2 я хочу, чтобы одно из полей ввода было автозаполнено, когда пользователь начинает вводить текст. Ниже мой код использует Jui Autocomplete.

  <?php $items= ArrayHelper::map(Company::find()->all(), 'c_id', 'name'); echo AutoComplete::widget([ 'model' => $model, 'attribute' => 'company', 'clientOptions' => [ 'source' => $items, ], ]);?> 

Это не работает. Когда я напечатал свой массив, я получил

  Array ( [1] => abc [2] => xyz [4] => pqr ) 

Я заработал, когда вручную устанавливаю

  $items=['abc','xyz','pqr']; 

Причина может быть в том, что мои c_id's не упорядочены, но я хочу получить значение c_id ! Любая идея, как это исправить?

Это можно решить с помощью скрытого ввода поля. Надеюсь, это поможет кому-то!

  <?php use yii\web\JsExpression; $data = Company::find() ->select(['name as value', 'name as label','c_id as id']) ->asArray() ->all(); echo AutoComplete::widget([ 'name' => 'Company', 'id' => 'ddd', 'clientOptions' => [ 'source' => $data, 'autoFill'=>true, 'minLength'=>'4', 'select' => new JsExpression("function( event, ui ) { $('#user-company').val(ui.item.id); }") ], ]); ?> <?= Html::activeHiddenInput($model, 'company')?> 

Автозаполнение просто помогает заполнить поле с требуемым значением. Если вам нужно отправить c_id посмотреть в dropdownList или Select2 плагин.

Посмотрите этот виджет http://demos.krajee.com/widget-details/select2 yii2 для идей. Вот пример кода:

 <?php use kartik\widgets\Select2; use app\models\Modelname; $model = new Modelname; $data = ['qwe1'=>'color1','key2'=>'color3'] ?> <?= Html::beginForm() ?> <?= Select2::widget([ 'model' => $model, 'attribute' => 'color', 'data' => array_merge(["" => ""], $data), 'options' => ['placeholder' => 'Select a state ...'], 'pluginOptions' => [ 'allowClear' => true ], ]); ?> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> <?= Html::endForm() ?> 

Он также поддерживает данные, загруженные ajax: http://demos.krajee.com/widget-details/select2#ajax