2015-02-07 11 views
8

Próbuję użyć widgetu autouzupełniania Jui Jui2.Yii2: Jui Auto Complete Widget jak?

Mam ten kod, który pokazuje prawidłową datę automatycznego uzupełnienia, ale nie mogę zapisać danych.

$data=ArrayHelper::map(State::find()->all(), 'id', 'state_name'); 
$data=array_merge($data); 

A potem

echo 'State' .'<br>'; 
    echo AutoComplete::widget([ 
    'model'=>$model, 
    'attribute' => 'state_id',  
    'clientOptions' => [ 
     'source' => $data,   
    ], 
]); 

Każde rozwiązanie będzie bardzo mile widziane. Dzięki.

Odpowiedz

8

Ok znalazłem rozwiązanie, to idzie tak:

use yii\jui\AutoComplete; 
use yii\web\JsExpression; 

Następnie:

$data = State::find() 
    ->select(['state_name as value', 'state_name as label','id as id']) 
    ->asArray() 
    ->all(); 

Następnie

echo 'State' .'<br>'; 
    echo AutoComplete::widget([ 
    'name' => 'State',  
    'id' => 'ddd', 
    'clientOptions' => [ 
     'source' => $data, 
     'autoFill'=>true, 
     'select' => new JsExpression("function(event, ui) { 
     $('#city-state_name').val(ui.item.id);//#City-state_name is the id of hiddenInput. 
    }")], 
    ]); 

i wreszcie:

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

To wszystko. Mam nadzieję, że niektórzy uznają to za przydatne. Dzięki.

+0

Witam, istnieje sposób wdrożenia sprawdzania poprawności modelu na polu autouzupełniania? Thx –

+0

Nie zapomnij zainstalować JUI: https://github.com/yiisoft/yii2-jui – Ludo