Сохранение нескольких файлов изображений с помощью Kartik FileInput Widget

В настоящее время я использую Yii2 PHP framework и виджет FileInput в своей системе. Я использовал это руководство по загрузке входных файлов в нескольких файлах, но оно не работало в моей системе. В настоящее время я использую MongoDB в качестве моей базы данных. Вот мой прогресс до сих пор (оригинал, только одна загрузка):

Контроллер , actionCreate

 if($model->load(Yii::$app->request->post())) { $model->attachment = UploadedFile::getInstance($model, 'attachment'); if($model->attachment) { $path = 'archive/contact/' . $model->attachment->baseName . '.' . $model->attachment->extension; $count = 0; { while(file_exists($path)) { $path = 'archive/contact/' . $model->attachment->baseName . '_'.$count.'.' . $model->attachment->extension; $count++; } } $model->attachment->saveAs($path); $model->attachment = $path; } $model->save(); } else { return $this->renderAjax('create', [ 'model' => $model, ]); } 

Посмотреть

 echo FileInput::widget([ 'model' => $model, 'attribute' => 'attachment[]', 'name' => 'attachment[]', 'options' => [ 'multiple' => true, 'accept' => 'image/*' ], 'pluginOptions' => [ 'showCaption' => false, 'showRemove' => false, 'showUpload' => false, 'browseClass' => 'btn btn-primary btn-block', 'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ', 'browseLabel' => 'Attach Business Card', 'allowedFileExtensions' => ['jpg','gif','png'], 'overwriteInitial' => false ], ]); 

Я также буду включать мою модель

 class Contact extends ActiveRecord { /** * @inheritdoc */ public static function collectionName() { return ['iaoy', 'contact']; } /** * @inheritdoc */ public function attributes() { return [ '_id', 'fname','lname','email','phone','address','contact_type','business_name','notes','company_id','date_added','attachment','sort' ]; } /** * @inheritdoc */ public function rules() { return [ [['_id', 'fname','lname','email','phone','address','contact_type','business_name','notes','company_id','date_added','attachment','sort'], 'safe'], [['fname','lname','contact_type','business_name'], 'required'], [['attachment'], 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 500*500], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ //'contact_id' => 'Contact ID', '_id' => 'Contact ID', 'contact_type' => 'Contact Type', 'business_name' => 'Business Name', 'fname' => 'First Name', 'lname' => 'Last Name', 'email' => 'Email', 'phone' => 'Phone', 'address' => 'Address', 'notes' => 'Notes', 'attachment' => 'Attachment', 'company_id' => 'Company ID', ]; } } 

Как реализовать множественную загрузку файлов, если это уже реализовано? Любые мысли высоко ценятся.

РЕДАКТИРОВАТЬ:

Вот мой код загрузки нескольких файлов. Я не смешивал его с моим текущим кодом (загрузка одного файла), вместо этого я создал новый MVC. Это в основном то, что я нашел в руководстве, о котором я упоминал выше, с очень небольшими изменениями:

Модель

 <?php namespace app\models; use yii\base\Model; use yii\web\UploadedFile; class Upload extends Model { public $file; public function attributes() { return [ 'file', 'urls' ]; } public function rules() { return [ [['file', 'urls'], 'safe'], [['file'], 'file','extensions' => 'png, jpg'], [['urls'],'string'], ]; } } 

Посмотреть

 <?php use yii\helpers\Html; use yii\widgets\ActiveForm; use kartik\file\FileInput; $form = ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data']]); ?> <?php echo FileInput::widget([ 'model' => $model, 'attribute' => 'file[]', 'name' => 'file[]', 'options' => [ 'multiple' => true, 'accept' => 'image/*' ], 'pluginOptions' => [ 'showCaption' => false, 'showRemove' => false, 'showUpload' => false, 'browseClass' => 'btn btn-primary btn-block', 'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ', 'browseLabel' => 'Attach Business Card', 'allowedFileExtensions' => ['jpg','gif','png'], 'overwriteInitial' => false ], ]); ?> <button>Submit</button> <?php ActiveForm::end(); ?> 

контроллер

 public function actionUpload() { $model = new Upload(); if ($model->load(Yii::$app->request->post())) { $model->file = UploadedFile::getInstances($model, 'file'); foreach ($model->file as $key => $file) { $file->saveAs('archive/reimbursement/'. $file->baseName . '.' . $file->extension);//Upload files to server $model->urls .= 'archive/reimbursement/' . $file->baseName . '.' . $file->extension.'**';//Save file names in database- '**' is for separating images } $model->save(); return $this->redirect(['viewuploads', 'id' => $model->id]); } else { return $this->render('upload', [ 'model' => $model, ]); } } 

Я также добавил 'urls' в моей функции rules Contact.php