Yii2自动填充:保存ID而不是值

时间:2014-09-07 08:22:27

标签: php yii-extensions yii2

我有一个名为datalist的数组列表,其中包含具有id的公司的名称。当我将它与typeahead小部件一起使用时,它使用变量coSearch(输入的id)来捕获公司的价值。但我想要显示公司列表,当选择时,它必须在变量中给出该id的值。我真的搞砸了这个问题,工作了三天。请帮帮我。 这是我的activeform的代码,其中包含小部件。

<?php 
    $form = ActiveForm::begin([
    'action' => ['search'],
    'method' => 'get',
    ]); 
    $dataList=ArrayHelper::map($companies, 'id', 'name');
    echo Typeahead::widget([
    'model' => $companySearched, 
    'name'=>'coSearch',
    'options' => ['placeholder' => 'Search  company','id'=>'searchCompany1','class' => 'form-      control','value'=>'1'],
    'pluginOptions' => ['highlight'=>true],
    'dataset' => [
        [
            'local' =>  $dataList,
            'limit' => 10,
        ]
    ]
]);


?>

1 个答案:

答案 0 :(得分:4)

这可以通过隐藏字段来解决。我在这里使用autocomplete

<?php
use yii\web\JsExpression;
use yii\jui\AutoComplete;

$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 ) {
    $('#model-company').val(ui.item.id);
 }")],
 ]);
 ?>

 <?= Html::activeHiddenInput($model, 'company')?>

希望这有帮助!