Добрый вечер.
Думаю, что в beforeSave() плохая идея сохранения картинки.
Лучше сделайте проверку, пустое значение miniature или нет. Если не пустое, то заполнить новые данные старым значением. Конечно же при условии, что нового значения Вы не передали.
Что-то подобное должно быть
public function beforeSave($insert)
{
if(!$this->isNewRecord && self::getOldAttribute('miniature') != ''){
$this->miniature = self::getOldAttribute('miniature');
}
return parent::beforeSave($insert);
}
Это первое, что пришло в голову. А так, надо разбираться с документацией виджета, возможно там это предусмотрено.
Возможно получится что-то подобное, но не уверен
<?= $form->field($model, 'miniature')->widget(FileInput::classname(), [
'options' => ['accept' => 'image/*'],
'model' => !Yii::$app->isNewRecord ? $model->miniature : null
]); ?>