【发布时间】:2019-02-22 13:30:08
【问题描述】:
我在使用 yii2 的 Select2 kartik 插件时遇到了一些问题。 我使用 Ajax 加载设置了我的插件,并且在我的创建视图中工作正常,所以我可以选择多个值并将其保存在数据库中。
当我显示更新视图时,我想将我保存在数据库中的值设置为可见,但它只显示一个带有 x 图标的灰色矩形。
这是我尝试过的。
echo $form->field($model, 'lista_art')->widget(Select2::classname(), [
'initValueText' => $art_list,// array of text to show in the tag for the selected items
'showToggleAll' => false,
'options' => ['placeholder' => 'Select...',
'multiple' =>true,
'value' => $value, // array of Id of the selected items
],
'pluginOptions' => [
'tags' => true,
'tokenSeparators' => [',', ' '],
'allowClear' => true,
'minimumInputLength' => 3,
'language' => [
'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
],
'ajax' => [
'url' => \yii\helpers\Url::to(['lista-articoli']),
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { console.log(markup);return markup; }'),
'templateResult' => new JsExpression('function(lista_art) { return lista_art.art_modello; }'),
'templateSelection' => new JsExpression('function (lista_art) { return lista_art.art_modello; }'),
],
]);
这就是结果。
$art_list 和 $value 是这样的数组
$art_list = ['name1','name2'];
$value= ['id_name1','id_name2'];
如果我用浏览器检查器检查代码,我会发现这个
<li class="select2-selection__choice" title="name1">
<span class="select2-selection__choice__remove" role="presentation">×</span>
</li>
更新 我会找到错误的,而且它非常微不足道.. 错误在这里
'templateResult' => new JsExpression('function(lista_art) { return lista_art.art_modello; }'),
'templateSelection' => new JsExpression('function (lista_art) { return lista_art.art_modello; }')
没有 lista_art.art_modello 因为这个元素的对象是格式 id:id_name1 和 text:name1 所以改变这样的代码它会工作 p>
'templateResult' => new JsExpression('function(lista_art) { return lista_art.text; }'),
'templateSelection' => new JsExpression('function (lista_art) { return lista_art.text; }')
【问题讨论】:
-
尝试做
$value = ['id_name1' => 'name1', 'id_name2' => 'name2'];不确定它是否有效,但只是一个想法。另外,尝试将'value' => $value移出'options'数组 -
我会尝试但它不起作用,tnx 为您的评论。
-
你不能在 select2 上显示数组,$art_list 应该是字符串而不是数组。然后它会工作
-
我可以使用数组,因为我正在处理多项选择
标签: php yii2 jquery-select2 kartik-v