2016-09-06 16 views
0

yii2で複数のファイルをアップロードする実装を試みていますが、動作しません。アップロード用に2つのイメージを選択すると、「最大1つのファイルをアップロードできます」と表示されます。私はなぜ、そして解決方法を知らないのですか?実装ファイルを複数アップロードするyii2が動作しない

enter image description here

ビューでこのコード

<?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(); 
?>   

コントローラでこのコード

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 

namespace app\models; 

use Yii; 
use yii\web\UploadedFile; 

/** 
* 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'], ] 
     ]; 
    } 

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


} 

答えて

1

あなたがすべきモデルのルールを修正するだけです(例: :

[['image'], 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxFiles' => 0], 

FileValidator::$maxFilesについて詳しく読む:

$maxFiles:最大ファイルを指定された属性が保持できる数えます。デフォルトは1で、単一ファイルのアップロードを意味します。より高い数値を定義することで、複数のアップロードが可能になります。 0に設定すると、同時にアップロードできるファイル数に制限がないことを意味します。

関連する問題