2016-05-09 10 views
0

Ich benutze Select2 Ajax laden. Ich bekomme den Code von diesem Link: http://demos.krajee.com/widget-details/select2. Wenn ich Wörter in ein Feld eingabe, werden alle Daten/Werte angezeigt, aber es kann nicht automatisch Daten/Werte nach Wörtern auswählen, die ich in das Feld eingabe. Also, meine select2 wählen immer die ersten Daten/Werte und zeigen alle Werte an. Was ist das Problem? Dies sind die Codes:Kann keinen Wert in select2 finden Ajax laden in yii2

_form.php

$url = Url::to(['/paket/jsonlist']); 

    $cityDesc = empty($model->no_induk) ? '' : Penerima::findOne($model->no_induk)->nama; 

    echo $form->field($model, 'no_induk')->widget(Select2::classname(), [ 
     'initValueText' => $cityDesc, // set the initial display text 
     'options' => ['placeholder' => 'Search for a city ...'], 
     'pluginOptions' => [ 
      'allowClear' => true, 
      'minimumInputLength' => 1, 
      'language' => [ 
       'errorLoading' => new JsExpression("function() { return 'Waiting for results...'; }"), 
      ], 
      'ajax' => [ 
       'url' => $url, 
       'dataType' => 'json', 
       'data' => new JsExpression('function(params) { return {q:params.term}; }') 
      ], 
      'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 
      'templateResult' => new JsExpression('function(no_induk) { return no_induk.text; }'), 
      'templateSelection' => new JsExpression('function (no_induk) { return no_induk.id; }'), 
     ], 
    ]); 

mein Controller:

public function actionJsonlist($q = NULL, $id = NULL) 
    { 
     \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
     $out = ['results' => ['id' => '', 'text' => '']]; 

     if(!is_null($q)) 
     { 
      $query = new \yii\db\Query; 
      $mainQuery = $query->select('no_induk AS id, nama AS text') 
           ->from('penerima') 
           ->limit(20); 
      $command = $mainQuery->createCommand(); 
      $data = $command->queryAll(); 
      $out['results'] = array_values($data); 
     } 
     elseif ($id > NULL) 
     { 
      $out['results'] = ['id' => $id, 'text' => \frontend\models\Penerima::find($id)->nama]; 
     } 
     return $out; 
    } 

Antwort

0

Könnte Sie den Attributnamen verwenden und nicht die Vars

echo $form->field($model, 'no_induk')->widget(Select2::classname(), [ 
    'initValueText' =>'cityDesc', // set the initial display text 

oder

echo $form->field($model, 'no_induk')->widget(Select2::classname(), [ 
    'initValueText' =>$model->cityDesc, // set the initial display text