在yii2中自动完成

Den*_*G B 7 php autocomplete yii2

在Yii2中,我希望我的输入字段之一在用户开始输入时自动完成.Below是我使用的代码Jui Autocomplete.

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

这不起作用.当我打印我的阵列时,我喜欢

 Array ( [1] => abc [2] => xyz [4] => pqr )
Run Code Online (Sandbox Code Playgroud)

当我手动设置时,我得到它的工作

 $items=['abc','xyz','pqr'];
Run Code Online (Sandbox Code Playgroud)

原因可能是我c_id's没有订购?但我想获得c_id提交的价值!任何想法如何解决这个问题?

Den*_*G B 15

这可以通过隐藏的字段输入来解决.希望这对某人有帮助!

    <?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')?>
Run Code Online (Sandbox Code Playgroud)