Здравствуйте уважаемое сообщество. Раз за разом веду не равную войну с загрузкой файла, и каждый раз ее проигрываю, заменяя вроде бы красивые функции yii2 на старый добрый нативный php.
Суть в чем. Когда мы используем все нативное от yii, в котором и модели, и контроллеры, и вьюшки от самого движка, загрузка файла достаточно простая. Создаем в activeForm field с типом file, и на стороне контроллера вполне спокойно работаем с целой моделью, в которой и файлы, и текстовые данные.
Когда дело доходит до REST, в котором у нас не существует всей видимой части yii2, начинается что-то мне совершенно не понятное.
Задача простая. Предположим создаем новость, в которой есть картинка как постер.
Создаем модель, в которой не забываем указать public $imageFile;
Создаем в модельке правила. вида тайтл только текст, 60 символов, описание текст 1000 символов, туда же добавим правило файла: [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
Казалось бы все. Идем в контроллер, создаем public function actionCreate()
В нем $file = new LogoFile();
следом все как в
мане
if (Yii::$app->request->isPost) {
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
ловим ошибку. imageFile пустой.
Проверяем $_FILES - пришел, есть.
Проверяем UploadedFile::getInstance($model, 'imageFile'); - нет файла.
Заглядываю по имени: UploadedFile::getInstancesByName("imageFile") - файл есть.
Очередной раз пытаюсь сломать гугл вопросами, найти ничего подобного не могу...
Подскажите пожалуйста как все-таки правильно в yii2 загрузить сопутствующий файл.
По логике то все вроде понятно. Берем файл, сохраняем его на диске, после сохранения берем путь до файла, и пишем в текстовое поле в БД. Но уже на этапе просто сохранить файл все рушится..
ps запрос я описал в сваггере, и через него тестировал