Отправить несколько форм загрузки изображений одним нажатием кнопки - PullRequest
0 голосов
/ 24 июня 2019

У меня есть три формы в одном представлении.Две формы имеют функцию загрузки изображений (multipart), а третья - это обычная форма с текстовыми полями. Я хочу загрузить все три формы одним нажатием кнопки.кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 26 июня 2019

Попробуйте этот код, он будет работать для загрузки нескольких изображений в разных таблицах в одной форме.

public function actionCreate()
    {
        $db = Yii::$app->db;
        $transaction = $db->beginTransaction();
        $savedFlag = false;
        $model = new Company();
        $divisionModel = new Division();
        $prajects = new Prajects();

        if ($model->load(Yii::$app->request->post()) && $prajects ->load(Yii::$app->request->post()) && $divisionModel->load(Yii::$app->request->post())) {
            try{
                $model->company_logo = UploadedFile::getInstance($model, 'company_logo');
                    if ($model->company_logo) {                
                        $model->company_logo->saveAs('uploads/' . $model->company_logo->baseName . '.' . $model->company_logo->extension);
                    }
                    if($model->save()){
                         $savedFlag = true;
                        $divisionModel->division_logo = UploadedFile::getInstance($divisionModel, 'division_logo');
                        if ($divisionModel->division_logo) {                
                            $divisionModel->division_logo->saveAs('uploads/' . $divisionModel->division_logo->baseName . '.' . $divisionModel->division_logo->extension);
                        }
                        //$divisionModel->comapnay_id = $model->id;
                        if(!$divisionModel->save()){
                            $savedFlag = false;
                        }
                        if(!$prajects->save()){
                            $savedFlag = false;
                        }
                    }
                    if($savedFlag){
                        $transaction->commit();
                        return $this->redirect(['view', 'id' => $model->id]);
                    }else{
                        $transaction->rollBack();
                    }
            }catch (\Exception $e) {
                $transaction->rollBack();
                throw $e;
            }
        }

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

файл create.php:

<?= $this->render('_form', [
        'model' => $model,
            'divisionModel' => $divisionModel,
            'prajects' => $prajects,
    ]) ?>

_form.php file:

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'company_logo')->fileInput() ?>
    <?= $form->field($divisionModel, 'division_name')->textInput(['maxlength' => true]) ?>

    <?= $form->field($divisionModel, 'division_logo')->fileInput() ?>
    <?= $form->field($prajects, 'name')->textInput(['maxlength' => true]) ?>

    <div class="form-group">
        <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
    </div>

    <?php ActiveForm::end(); ?>
...