2016-09-06 69 views
0

當我試圖使文件上傳多次失敗。當我上傳時,結果是錯誤的。錯誤描述可以看到下面的內容。以及解決方案如何?文件上傳多個錯誤是「獲取不明財產」yii2

未知屬性 - yii \ base \ UnknownPropertyException。 獲得未知屬性:應用程序\型號\畫廊::峇底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', 
 
     ]; 
 
    } 
 

 

 
}

+0

什麼是完整的堆棧跟蹤?即行號爲 – Manquer

+0

\ app \ models \ Gallery(['image'=> $ file-> baseName。'。'。$ file-> extension]); 這是錯誤來自的地方。您將一個$ config-Array放入模型類中。檢查模型實例的創建。 – MacGyer

+0

https://github.com/yiisoft/yii2/blob/master/framework/base/Object.php#L102 – MacGyer

回答

0

我還沒有看到保存的這種方法!

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); 
} 
+0

我的問題已解決。 – CrashBurn