У меня проблемы с плагином Select2 kartik для yii2.Я установил свой плагин с помощью Ajax Loading и в моем представлении создания работает нормально, поэтому я могу выбрать несколько значений и сохранить их в базе данных.
Когда я показываю представление обновления, я хочу установить видимое значение, которое яСохранено в моей базе данных, но оно показывает мне только серый прямоугольник со значком 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; }'),
],
]);
И вот результат.
![enter image description here](https://i.stack.imgur.com/1jT3S.png)
$ 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 , поэтому при таком изменении кода будет работать
'templateResult' => new JsExpression('function(lista_art) { return lista_art.text; }'),
'templateSelection' => new JsExpression('function (lista_art) { return lista_art.text; }')