Проблема при обновлении записи с виджетом FileInput от kartik

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
MarkL
Сообщения: 68
Зарегистрирован: 2017.07.05, 20:37

Проблема при обновлении записи с виджетом FileInput от kartik

Сообщение MarkL »

Здравствуйте, использую виджет FileInput для загрузки миниатюр к записи. Создание/редактирование/etc записи сделано при помощи CRUD.

Дело в том, что когда происходит подгрузка формы обновления записи - не подгружается название изображения в БД, в отличии от других полей.

Изображение

Допустим, изображение и все другие поля заполнены и мы решили отредактировать поле blocks.

1. Заходим в редактирование записи.
2. Заменяем содержимое поле blocks.
3. Сохраняем.

Поскольку, поле миниатюры пустое -- сохранится null заместо текущего содержимого.

Собственно, хочу решить данную проблему. Пока из вариантов сделать отдельную функцию для обновления/добавления/удаления миниатюры, но это уже крайний вариант. Думаю, кто либо-встречался с данной проблемой и надеюсь, что сможет мне помочь.

Вот часть кода, которая отвечает за вывод формы загрузки изображения:

Код: Выделить всё

<?= $form->field($model, 'miniature')->widget(FileInput::classname(), [
    'options' => ['accept' => 'image/*'],
]); ?>
Функция сохранения изображения в модели:

Код: Выделить всё

public function beforeSave($insert)
{
    if ($file =  UploadedFile::getInstance($this, 'miniature') ){

        $dir = Yii::getAlias('@frontend').'/web/upload/';
        $this->miniature = time().'.'.$file->extension;
        $file->saveAs($dir.$this->miniature);

    }

    return parent::beforeSave($insert); 
}
Ответить