В общем чтобы вот такая картина была
https://screenshots.firefox.com/BXaxdqF9mq1Q8U0f/null
В принципе я yii2-widget-select2 вставил в виджет yii2-multiple-input и даже сделал сохранение. Но столкнулся с проблемой, не могу сделать чтобы при заходе в редактирование отображались сохраненные данные.
В этих формах я нахожу посты и сохраняю их ID в отдельной БД
[id, item_id, marker]
marker нужен для поиска нужных строк в БД
Конечно если я сохраню всего одно значение То оно выводится, проблемы начинаются когда сохраняю несколько строк в БД. Ни как не пойму как вывести массив в yii2-widget-select
Вот моя форма
Код: Выделить всё
<?php
$itemDesc = empty($model->item_id) ? '' : common\models\Item::findOne($model->item_id)->title;
echo $form->field($model, 'item_id')->widget(MultipleInput::className(), [
'columns' => [
[
'name' => 'slide',
'type' => \kartik\select2\Select2::className(),
'options' => [
'initValueText' => $itemDesc, // set the initial display text
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'language' => 'ru',
'ajax' => [
'url' => \yii\helpers\Url::to(['item-list']),
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(item_id) { return item_id.text; }'),
'templateSelection' => new JsExpression('function (item_id) { return item_id.text; }'),
],
],
'items' => [
'0' => 'Saturday',
'1' => 'Monday'
],
],
]
])->label(false);
?>
Код: Выделить всё
public function actionIndex() {
$model = $this->findModel();
if ($model->load(Yii::$app->request->post())) {
$array = $model->item_id;
foreach ($array['slide'] as $key => $value){
$model = new Slider();
$model->item_id = $value;
$model->marker = 'slider';
$model->save();
}
return $this->redirect(['index']);
}
return $this->render('index', [
'model' => $model,
]);
protected function findModel()
{
if (($model = Slider::find()->andWhere(['marker' => 'slider'])->one())) {
return $model;
}
return new Slider();
}
Код: Выделить всё
$model = Slider::find()->andWhere(['marker' => 'slider'])->all())
В общем как передать это массив в форму чтобы в ней выводились все пункты которые были добавлены ранее?Error
Call to a member function load() on array
Код: Выделить всё
$itemDesc = empty($model->item_id) ? '' : common\models\Item::findOne($model->item_id)->title;
'options' => [
'initValueText' => $itemDesc, // set the initial display text