Yii 2.0从数据库中选择预选值

时间:2015-10-07 19:53:06

标签: yii

我一直试图解决问题,但无济于事,但我相信我会在这里找到解决方案。我正在使用Kartik 2.0 Select扩展程序进行多项选择。很好,所有工作在插入数据库时​​工作,但我无法检索保存的记录,以便在选择字段中显示为选中。

//我已经包含了kartik小部件

使用kartik \ widgets \ Select2;

<label>Desired Specialization(s)</label>
            <?= $form->field($spec, 'id')->label(false)->widget(Select2::classname(), [
                'data' => $model->getAllSpecializations(),
                'options' => ['placeholder' => 'You can choose more than one specialization ...'],
                'pluginOptions' => [
                    'allowClear' => true,
                    'multiple' => true
                ],
            ]);

            ?>
        </div>

请您的回复将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

我认为您需要将保存的值添加为初始数据?像这样:

'value' => $savedDataArray, // initial value

http://demos.krajee.com/widget-details/select2#usage-tags

答案 1 :(得分:0)

在深入挖掘代码之后,我找到了一种方法,可以使用Yii Select2将选定的数据库值显示为多选项

我的模特

public function getCandidateLanguage()
    {
        $langValues = (new \yii\db\Query())
                    ->select('c.language_id AS id, l.lang_name')
                    ->from('candidate_language c ')
                    ->innerJoin('languages l','c.language_id = l.id')
                    ->where('c.candidate_id='.$this->candidate_id)
                    ->orderBy('c.language_id')
                    ->all();

            return \yii\helpers\ArrayHelper::map($langValues,'id','lang_name');
    }

我的观点 使用kartik \ widgets \ Select2;

<?php
         //the line below is to fetch the array key of $model->getCandidateLanguage() array   
         $lang->id = array_keys($model->getCandidateLanguage());  // value to initialize
            echo Select2::widget([
               'model' => $lang,
               'attribute' => 'id',
               'data' => $model->getAllLanguages(),

               'options' => ['placeholder' => 'Choose multiple languages'],
                'pluginOptions' => [
                    'allowClear' => true,
                    'multiple' => true,
                    'tags' => true,
                ],

            ]);

         ?>

希望它可以帮助那些面临同样问题的人。