2014-04-22 10 views
7

In Yii2 möchte ich eines meiner Eingabefelder automatisch vervollständigen, wenn der Benutzer beginnt zu tippen. Unten ist mein Code, der Jui Autocomplete verwendet. DieseAutocomplete in yii2

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

ist nicht working.When ich meine Array gedruckt, ich erhielt wie

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

Ich habe Arbeits es, wenn ich manuell einstellen wie

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

Der Grund dafür kann mein sein c_id's sind nicht bestellt? Aber ich möchte den c_id Wert erhalten, um eingereicht zu werden! Irgendeine Idee, wie man das repariert?

+0

gute Frage, es scheint, Sie können nicht – Alex

+0

@Alex Vielen Dank! Bitte sehen Sie meine aktualisierte Frage http://stackoverflow.com/questions/23260636/autocomplete-options-from-database-yii2 –

Antwort

12

Dies kann dies jemand helfen wird, mit Hilfe einer versteckten Feld input.Hope gelöst werden!

<?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')?> 
+1

Hallo Dency - Ich habe versucht, das Auto-Vervollständigen-Widget mit unserem Vorschlag zu verwenden. Es funktioniert gut, aber beim Update zeigt das Feld leer. vermisse ich etwas? – Joshi

1

Mit der automatischen Vervollständigung können Sie das Feld mit dem erforderlichen Wert füllen. Wenn Sie c_id einreichen müssen, schauen Sie nach dropdownList oder Select2 plugin.

Überprüfen Sie diese http://demos.krajee.com/widget-details/select2 yii2 Widget für Ideen. Hier Beispielcode:

<?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() ?> 

Es unterstützt auch geladenen Daten Ajax: http://demos.krajee.com/widget-details/select2#ajax

+0

Vielen Dank für Ihre Antwort. Aber ich möchte es ohne irgendwelche Erweiterungen schaffen. Bitte sehen Sie meine aktualisierte Frage. Http://stackoverflow.com/questions/23260636/autocomplete-options-from-database-yii2? Lq = 1 –