我一直试图解决问题,但无济于事,但我相信我会在这里找到解决方案。我正在使用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>
请您的回复将不胜感激。感谢
答案 0 :(得分:0)
我认为您需要将保存的值添加为初始数据?像这样:
'value' => $savedDataArray, // initial value
答案 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,
],
]);
?>
希望它可以帮助那些面临同样问题的人。