Использую виджет Fileinput на форме (ActiveForm) для добавления фотографии.
Если фотография уже имеется (редактируем модель) вывожу ее превью в данный виджет, слиянием массивов.
Код: Выделить всё
$pluginOptions = [];
if(!$model->isNewRecord) {
$pluginOptions['initialPreview'] = $preview_url;
$pluginOptions['initialCaption'] = $model->title;
}
echo $form->field($model, 'image')->widget(FileInput::class, [
'name' => 'user-photo',
'pluginOptions' => ArrayHelper::merge($pluginOptions, [
'initialPreviewAsData' => true,
'overwriteInitial' => true,
'maxFileSize' => 4096, // 4 Mb
'previewFileType' => 'image',
'showUpload' => false,
]),
'options' => ['accept' => 'image/*'],
]);
p.s. надеюсь понятно объяснил.