Добрый день. Собственно, сам виджет
https://github.com/2amigos/yii2-file-upload-widget
Мне надо наладить загрузку изображений на странице создания новостей. Загружать их надо не вместе с созданием новости, а на странице просмотра. Использую базовый шаблон виджета с превью.
Имею такой код вида
<?php $form = ActiveForm::begin(['action' => '/payment-info/updoc','options' => ['method' => 'post']]); ?>
<?= FileUpload::widget([
'model' => $model,
'attribute' => 'document',
'url' => ['uploads/'], // your url, this is just for demo purposes,
'options' => ['accept' => 'image/*'],
'clientOptions' => [
'maxFileSize' => 2000000
],
// Also, you can specify jQuery-File-Upload events
// see: https://github.com/blueimp/jQuery-File-Upload/wiki/Options#processing-callback-options
'clientEvents' => [
'fileuploaddone' => 'function(e, data) {
console.log(e);
console.log(data);
}',
'fileuploadfail' => 'function(e, data) {
console.log(e);
console.log(data);
}',
],
]); ?>
<?php ActiveForm::end(); ?>
Контроллер
public function actionUpdoc () {
$model = new PaymentInfo();
$directory = 'uploads' . DIRECTORY_SEPARATOR;
$imageFile = UploadedFile::getInstance($model, 'document');
if ($imageFile) {
$uid = uniqid(time(), true);
$fileName = $uid . '.' . $imageFile->extension;
$filePath = $directory . $fileName;
$imageFile->saveAs($filePath);
$model->document = $filePath;
$path = $directory . $fileName;
return Json::encode([
'files' => [
[
'name' => $fileName,
//'size' => $imageFile->size,
'url' => $path,
'thumbnailUrl' => $path,
'deleteUrl' => 'image-delete?name=' . $fileName,
'deleteType' => 'POST',
],
],
]);
}
}
Файл ни сохраняется в папку, ни выводится превью изображения. Здесь тонкости именно с урлами и путями, так что если кто работал с этим виджетом дайте напутствие.