【问题标题】:File upload multiple error is "Getting unknown property" in yii2文件上传多个错误是yii2中的“Getting unknown property”
【发布时间】:2016-09-06 15:22:00
【问题描述】:

当我尝试多次上传文件时失败。当我处理上传时,结果是错误的。错误描述见下图。又如何解决?

未知属性 – yii\base\UnknownPropertyException。 获取未知属性:app\models\Gallery::Batas KRS.JPG

控制器中的代码

public function actionGallery()
        {
            $model = new \app\models\Gallery();
            if (\Yii::$app->request->post()) {
                $model->image = \yii\web\UploadedFile::getInstances($model, 'image');
                    if ($model->validate()) {
                        foreach ($model->image as $file) {
                            $saveTo = 'uploads/' . $file->baseName . '.' . $model->$file->extension;
                                if ($file->saveAs($saveTo)) {
                                    $model2 = new \app\models\Gallery(['image' => $file->baseName . '.' . $file->extension,
                                        ]);
                                    $model2->save(false);
                                }
                            }
                            \Yii::$app->session->setFlash('success', 'Success uploaded !');
                        }
                    }
                    return $this->render('gallery', ['model' => $model
                        ]);
        }

查看代码

<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
?>
<h1>Gallery</h1>
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data'] ]) ?>
    <?= $form->field($model, 'image[]')->fileInput(['multiple' => true]) ?>
    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
<?php
ActiveForm::end();  
?>          

模型中的代码

<?php

namespace app\models;

use Yii;
use yii\web\UploadedFile;
use yii\validators\FileValidator;

/**
 * This is the model class for table "gallery".
 *
 * @property integer $id
 * @property string $image
 */
class Gallery extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'gallery';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return 
            [[['image'], 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxFiles' => 0], ]
            ;
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'image' => 'Image',
        ];
    }


}

【问题讨论】:

  • 什么是完整的堆栈跟踪?即行号这个抛出错误
  • \app\models\Gallery(['image' => $file->baseName . '.' . $file->extension]);这就是错误的来源。您将 $config-Array 放入模型类中。检查模型实例的创建。
  • 没有@Manquer。又该如何解决?
  • 检查模型实例创建@MacGyer是什么意思?

标签: file-upload yii upload yii2 image-upload


【解决方案1】:

没见过这种保存方法!

if ($file->saveAs($saveTo)) {
     $model2 = new \app\models\Gallery(['image' => $file->baseName . '.' . $file->extension,
                   ]);
  $model2->save(false);
}

您的代码应如下所示:

if ($file->saveAs($saveTo)) {
         $model2 = new \app\models\Gallery();
         $model2->isNewRecord = true;
         $model2->image = $file->baseName . '.' . $file->extension;                
         $model2->save(false);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2017-04-25
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多