Задать вопрос
@JoneCode

Как добавить сразу много значений?

Очередной вопрос по Yii2, воспользовался расширением https://github.com/unclead/yii2-multiple-input, установил вроде всё сделал как в документации написано, но проблема в то что данные в БД сохраняются не массивом а по одной записи, подскажите, где я затупил очередной раз? Спасибо!

мой Controller:
public function actionCreate()
    {
        $models = [new Item()];

        $request = Yii::$app->getRequest();
        if ($request->isPost && $request->post('ajax') !== null) {
            $data = Yii::$app->request->post('Item', []);
            foreach (array_keys($data) as $index) {
                $models[$index] = new Item();
            }
            Model::loadMultiple($models, Yii::$app->request->post());
            Yii::$app->response->format = Response::FORMAT_JSON;
            $result = ActiveForm::validateMultiple($models);
            return $result;
        }

        if (Model::loadMultiple($models, Yii::$app->request->post())) {
           foreach ($models as $model) {
                $model->save(false);
            }
            return $this->redirect('index');
        }

        return $this->render('create', [
            'models' => $models,
        ]);
    }


Мой view файл:
<?= TabularInput::widget([
        'models' => $models,
        'modelClass' => Item::class,
        'cloneButton' => true,
        'sortable' => false,
        'min' => 1,
        'max' => 5,
        'addButtonPosition' => [
            TabularInput::POS_HEADER,
        ],
        'layoutConfig' => [
            'offsetClass'   => 'col-sm-offset-4',
            'labelClass'    => 'col-sm-2',
            'wrapperClass'  => 'col-sm-10',
            'errorClass'    => 'col-sm-4'
        ],
        'attributeOptions' => [
            'enableAjaxValidation'   => true,
            'enableClientValidation' => false,
            'validateOnChange'       => false,
            'validateOnSubmit'       => true,
            'validateOnBlur'         => false,
        ],
        'form' => $form,
        'columns' => [
            [
                'name' => 'id',
                'type' => TabularColumn::TYPE_HIDDEN_INPUT
            ],
            [
                'name' => 'title',
                'title' => 'Title',
                'type' => TabularColumn::TYPE_TEXT_INPUT,
                'attributeOptions' => [
                    'enableClientValidation' => true,
                    'validateOnChange' => true,
                ],
                'enableError' => true
            ],
            [
                'name' => 'description',
                'title' => 'Description',
            ],
        ],
    ]) ?>


Моя model (стандарт Gii генератор):
<?php

namespace common\models;

use Yii;

/**
 * This is the model class for table "item".
 *
 * @property int $id
 * @property string $title
 * @property string $description
 * @property string $file
 * @property string $date
 */
class Item extends \yii\db\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'item';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['title', 'description', 'file', 'date'], 'required'],
            [['title', 'description', 'file', 'date'], 'string', 'max' => 255],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'title' => 'Title',
            'description' => 'Description',
            'file' => 'File',
            'date' => 'Date',
        ];
    }
}
  • Вопрос задан
  • 140 просмотров
Подписаться 1 Простой 18 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы