来自模型方法beforeSave的Yii2 uploadfile图像

时间:2018-06-14 23:15:07

标签: yii2 yii2-advanced-app yii2-model yii2-validation

我尝试上传4个或更少的图片,ajax验证不会返回任何错误,但在提交时我得到以下内容:

  

"错误":{   " imageFiles":[   "请上传文件。"   ]   }

ATTR:

/**
 * @var UploadedFile[]
 */
public $imageFiles;

规则:

return [
        [['imageFiles'], 'required', 'on' => self::REPORT_STEP1],
        [['imageFiles'], 'file', 'skipOnEmpty' => false, 'maxFiles' => 4],
];

BeforeSave:

public function beforeSave($insert)
{
    $files_urls = [];
    $this->imageFiles = UploadedFile::getInstances($this, 'imageFiles');

    foreach ($this->imageFiles as $file) {
        $path = Url::to(['/uploads/reports/'], true) . Yii::$app->security->generateRandomString() . '.' . $file->extension;
        $file->saveAs($path);
        $files_urls[] = $file->name;
    }

    $this->img_url = json_encode($files_urls);
    return parent::beforeSave($insert); // TODO: Change the autogenerated stub
}

形式:

<?php $form = ActiveForm::begin([
        'enableAjaxValidation' => true,
        'options' => [
            'enctype' => 'multipart/form-data'
        ]
    ]) ?>

    <?= $form->field($model, 'imageFiles[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?>

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

    <?php ActiveForm::end() ?>

0 个答案:

没有答案