在yii2中的select2 ajax加载中找不到值

时间:2016-05-09 13:38:54

标签: php select2 yii2

我使用select2 ajax加载。我从这个链接获得了代码:http://demos.krajee.com/widget-details/select2。当我在字段中输入单词时,它会显示所有数据/值,但不能根据我输入字段的单词自动选择数据/值。所以,我的select2总是选择第一个数据/值并显示所有值。有什么问题?这些是代码:

_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; }'),
        ],
    ]);

我的控制员:

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;
    }

1 个答案:

答案 0 :(得分:0)

您可以使用属性名称而不是vars

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

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