亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Yii2 ActiveForm 上傳不同屬性的文件

Yii2 ActiveForm 上傳不同屬性的文件

PHP
慕容森 2021-11-05 16:23:41
我有一個 Yii2 ActiveForm,它有兩個接受文件輸入的表單域。<?= $form->field($model, 'mainImage')->fileInput() ?><?= $form->field($model, 'productImage[]')->fileInput() ?>在控制器中,我有:    public function actionCreate(){    $model = new Product();    $model->supplier_id = Yii::$app->user->identity->id;    $imageArray = ['mainImage','productImage'];    $mainImageIndex = 1;    if ($model->load(Yii::$app->request->post())) {        $model->mainImage = UploadedFile::getInstance($model, 'mainImage');        $model->images = $model->singleImageUpload();        //UploadedFile::reset();        // var_dump($model->mainImage);        // exit();        $model->productImage = UploadedFile::getInstances($model, 'productImage');        $images = $model->multipleImageUpload();        $imageCount = count($images);        if ($model->validate() && $model->save(false)) {             for ($i=0; $i < $imageCount; $i++) {                 $imageModel = new ProductImage();                $imageModel->product_id = $model->id;                $imageModel->image = $images[$i];                $imageModel->save();            }            return $this->redirect(['view', 'id' => $model->id]);        }    }    return $this->render('create', [        'model' => $model,    ]);}在 Model 類中,我有這些驗證規則:[['mainImage','productImage'], 'safe'],[['mainImage','productImage'], 'file','skipOnEmpty' => true, 'extensions' => 'jpeg, jpg, png','checkExtensionByMimeType'=>false, 'maxFiles'=>10],每次我提交表單時,我都會收到一個mainImage字段錯誤,說明Please upload a file. 沒有錯誤productImage 可能有什么解決方法?編輯圖像mainImage并productImage成功上傳,但驗證錯誤仍然存在mainImage
查看完整描述

2 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

問題是模型類中的驗證。我已經將它們標記為safe

[['mainImage','productImage'], 'safe'],

我注釋掉了這個驗證并且它起作用了


查看完整回答
反對 回復 2021-11-05
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

如果要上傳多個文件,則需要更改視圖


<?= $form->field($model, 'mainImage')->fileInput() ?>

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

并且您的ruleinmodel說您一直在嘗試上傳多個圖像的屬性productImage[]和mainImage. 但是視圖表示該屬性mainImage用于單個文件,因此更改規則。


[['mainImage'], 'file', 'skipOnEmpty' => true, 'extensions' => 'jpeg, jpg, png'],

[['productImage'], 'file','skipOnEmpty' => true, 'extensions' => 'jpeg, jpg, png','checkExtensionByMimeType'=>false, 'maxFiles'=>10],

在控制器中,


$model->productImage = UploadedFile::getInstances($model, 'productImage');

$model->mainImage = UploadedFile::getInstance($model, 'mainImage');


if ($model->multipleImageUpload()) {

   // file is uploaded successfully

   return;

}

在你的模型中,


public function multipleImageUpload()

    {

        if ($this->validate()) { 

            foreach ($this->imageFiles as $file) {

                $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension);

            }

            return true;

        } else {

            return false;

        }

    }

如需更多參考,請訪問此鏈接:https : //www.yiiframework.com/doc/guide/2.0/en/input-file-upload


查看完整回答
反對 回復 2021-11-05
  • 2 回答
  • 0 關注
  • 190 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號