Осуществляя загрузчик файлов 2amigos, он отображает только интерфейс, но не показывает или не загружает файлы
I have tried this: <?= FileUploadUI::widget([ 'model' => $evidence, 'attribute' => 'path', 'url' => ['media/upload', 'id' => $evidence], 'gallery' => false, 'fieldOptions' => [ 'accept' => 'image/*' ], 'clientOptions' => [ 'maxFileSize' => 2000000 ], // ... 'clientEvents' => [ 'fileuploaddone' => 'function(e, data) { console.log(e); console.log(data); }', 'fileuploadfail' => 'function(e, data) { console.log(e); console.log(data); }', ], ]); ?>
Hey Geffory только ставит виджет на представление, мы не можем загружать файлы, которые мы должны создать Controller в соответствии с виджетами. В моем проекте я обычно использую расширение krajee File Input yii2. в любом случае я нашел пример контроллера с https://github.com/2amigos/yii2-file-upload-widget/issues/5
Функция контроллера
public function actionUpload($id) { $tour = Tour::findOne($id); if (!$tour) { throw new NotFoundHttpException(Yii::t('app', 'Page not found')); } $picture = new TourPicture(['scenario' => 'upload']); $picture->tour_id = $id; $picture->image = UploadedFile::getInstance($picture, 'image'); if ($picture->image !== null && $picture->validate(['image'])) { Yii::$app->response->getHeaders()->set('Vary', 'Accept'); Yii::$app->response->format = Response::FORMAT_JSON; $response = []; if ($picture->save(false)) { $response['files'][] = [ 'name' => $picture->image->name, 'type' => $picture->image->type, 'size' => $picture->image->size, 'url' => $picture->getImageUrl(), 'thumbnailUrl' => $picture->getImageUrl(TourPicture::SMALL_IMAGE), 'deleteUrl' => Url::to(['delete', 'id' => $picture->id]), 'deleteType' => 'POST' ]; } else { $response[] = ['error' => Yii::t('app', 'Unable to save picture')]; } @unlink($picture->image->tempName); } else { if ($picture->hasErrors(['picture'])) { $response[] = ['error' => HtmlHelper::errors($picture)]; } else { throw new HttpException(500, Yii::t('app', 'Could not upload file.')); } } return $response; }
-public function actionUpload($id) { $tour = Tour::findOne($id); if (!$tour) { throw new NotFoundHttpException(Yii::t('app', 'Page not found')); } $picture = new TourPicture(['scenario' => 'upload']); $picture->tour_id = $id; $picture->image = UploadedFile::getInstance($picture, 'image'); if ($picture->image !== null && $picture->validate(['image'])) { Yii::$app->response->getHeaders()->set('Vary', 'Accept'); Yii::$app->response->format = Response::FORMAT_JSON; $response = []; if ($picture->save(false)) { $response['files'][] = [ 'name' => $picture->image->name, 'type' => $picture->image->type, 'size' => $picture->image->size, 'url' => $picture->getImageUrl(), 'thumbnailUrl' => $picture->getImageUrl(TourPicture::SMALL_IMAGE), 'deleteUrl' => Url::to(['delete', 'id' => $picture->id]), 'deleteType' => 'POST' ]; } else { $response[] = ['error' => Yii::t('app', 'Unable to save picture')]; } @unlink($picture->image->tempName); } else { if ($picture->hasErrors(['picture'])) { $response[] = ['error' => HtmlHelper::errors($picture)]; } else { throw new HttpException(500, Yii::t('app', 'Could not upload file.')); } } return $response; }
вы можете использовать эту функцию контроллера и добавить модификацию своего контроллера в соответствии с вашими потребностями.