Здравствуйте, есть такой плагин для Yii2 Krajee FileInput Widget
demos.krajee.com/widget-details/fileinput для загрузки файлов.
Вопрос, пожалуй, для тех, кто в нем разбирается.
Честно скажу, плаваю в его настройках как пудовая гиря в пруду.
Нужно получить следующий результат:
1. Файл должен загружаться без перезагрузки страница, т.е. с использованием Ajax
2. В виджете крайне желательно использовать стандартную модель UploadForm
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\web\UploadedFile;
class UploadForm extends Model
{
/**
* @var UploadedFile
*/
public $imageFile;
public function rules()
{
return [
[['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => ['jpg', 'png']],
];
}
public function upload()
{
if ($this->validate()) {
$this->imageFile->saveAs(Yii::getAlias('@app').'/web/img/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
return true;
} else {
return false;
}
}
}
Пока, что, мой настроенный виджет выглядит примерно так:
echo FileInput::widget([
'model' => $model,
'attribute' => 'imageFile[]',
'pluginOptions' => [
'uploadUrl' => Url::to(['/site/upload']),
],
]);
В контроллере в actionUpload прописан стандартный код для загрузки формы:
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('upload', ['model' => $model]);
Короче говоря, при попытке загрузить файл чего то не получается, в добавок ко всему в консоли браузера выдается сообщение:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check
xhr.spec.whatwg.org/.
Собственно говоря нужна помощь в настройке виджета...