@AlexAll

Как в GridView yii2 сохранять данные из input полей?

В GridView я сделал поля input которые выводят информацию(цифру) для позиционирования блоков на сайте, чтобы при желании можно было выбрать позиции сразу для всех блоков
вот так это сделал в коде

<?php
    $form = ActiveForm::begin(['action' => ['main-page/sort/'],]);
    echo GridView::widget([
        'dataProvider' => $dataProvider,
        'summary' => false,
        'columns' => [
            [
                'attribute' => 'position',
                'filter' => false,
                'format' => 'raw',
                'headerOptions' => ['width' => '150'],
                'value' => function($model) use ($form) {
                    return $form->field($model, 'position')->textInput(['style' => 'width:50px'])->label(false);
                }
            ],
            'name',
         ?>           
  <div class="form-group">
        <?= Html::submitButton('Сохранить позиции', ['class' => 'btn btn-default']) ?>
     
    </div>
<?php
    ActiveForm::end();
    ?>


Две проблемы появляются.
1) При нажатии на кнопку сохранить отправляется массив пост запросом который отправляет только 1 Одно последнее значения поля
Попробовал вот так
return $form->field($model, 'position[]')->textInput(['style' => 'width:50px'])->label(false);


Отправляет все значения, но так пропадет отображение самих значений в этих полях

И Второе, не пойму как вместе с массивом отправлять id модели к которой принадлежит значение, чтобы в контролере можно было его сохранить

Кто знает как победить?
  • Вопрос задан
  • 515 просмотров
Решения вопроса 1
AnnaVel
@AnnaVel
Если я правильно поняла вас, то:
return $form->field($model, 'position['. $model->id. ']')->textInput(['value' => $model->position, 'style' => 'width:50px'])->label(false);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы