yii2-dynamicform не могу найти ошибку.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Artikk
Сообщения: 656
Зарегистрирован: 2017.02.10, 09:12

yii2-dynamicform не могу найти ошибку.

Сообщение Artikk » 2018.04.24, 11:13

Здравствуйте. Использую это: https://github.com/wbraganca/yii2-dynamicform
Делал по этому уроку: https://www.youtube.com/watch?v=eAg0LIrZDdk
Вот контроллер:

Код: Выделить всё

public function actionCreate()
    {
        $model = new Cart();

        $modelsTorrent = [new Torrent()];

        $model->added = date('d.m.Y');
        $model->addedid = Yii::$app->user->id;
        if ($model->load(Yii::$app->request->post()) && $model->save()) {




            //$oldIDs = ArrayHelper::map($modelsTorrent, 'id', 'id');
            $modelsTorrent = Model::createMultiple(Torrent::classname(), $modelsTorrent);
            Model::loadMultiple($modelsTorrent, Yii::$app->request->post());
            //$deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsTorrent, 'id', 'id')));

            // validate all models
            $valid = $model->validate();

            $valid = Model::validateMultiple($modelsTorrent) && $valid;
            if ($valid) {
                $transaction = \Yii::$app->db->beginTransaction();
                try {
                    if ($flag = $model->save(false)) {

                       /* if (! empty($deletedIDs)) {
                            Torrent::deleteAll(['id' => $deletedIDs]);
                        }*/
                        foreach ($modelsTorrent as $modelTorrent) {
                            $modelTorrent->cart_id = $model->id;
                            if (! ($flag = $modelTorrent->save(false))) {
                                $transaction->rollBack();
                                break;
                            }
                        }
                    }
                    if ($flag) {
                        $transaction->commit();
                        $model->image = UploadedFile::getInstance($model, 'image');
                        if ($model->image) {
                            $model->upload();
                        }
                        return $this->redirect(['view', 'id' => $model->id]);
                    }
                } catch (Exception $e) {
                    $transaction->rollBack();
                }
            }

            //return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('create', [
                'model' => $model,
                'modelsTorrent' => (empty($modelsTorrent)) ? [new Torrent] : $modelsTorrent,
            ]);
        }
    }
сейчас, после того, как сохраняю форму, у меня белый экран просто.
если я убираю эту строку: $valid = Model::validateMultiple($modelsTorrent) && $valid;
сохраняет, но сохраняет неправильно.
Если я добавляю один Item, то в таблицу записывается две записи, вместо одной, и вторая пустая... https://clip2net.com/s/3TG2430
А если два Item, записывается также 2 записи, причем вторая также пустая, а вместо Item1 записывается Item2

Если в модели [['dates', 'source', 'serii', 'atributes', 'name_link', 'link'], 'required'], комментирую эту строку, то белый экрана осле отправки нет, но все равно 2 items запимсывает (1 с данными, второй пустой)

Artikk
Сообщения: 656
Зарегистрирован: 2017.02.10, 09:12

Re: yii2-dynamicform не могу найти ошибку.

Сообщение Artikk » 2018.04.24, 12:53

в общем почему записывает только 1 item я решил. Теперь записывает нормально, но откуда-то берется еще строка пустая... т.е. 2 item заполнил, а в бд записывается 3 строки. 2 с данными, а 3 пустая

Artikk
Сообщения: 656
Зарегистрирован: 2017.02.10, 09:12

Re: yii2-dynamicform не могу найти ошибку.

Сообщение Artikk » 2018.04.24, 13:18

проблему решил. тему можно закрывать

Ответить