{% set options = {
formWidgetField: null,
imagePath: null,
required: true,
maxSizeKb: 2 * 1024 * 1024,
canRemove: false,
form: null,
mediaType: 'image',
}|merge(options|default({})) %}
<div class="bg-white py-2 border p-2 rounded">
{% if options.imagePath %}
{% if options.mediaType == 'image' %}
<img class="mb-2" src="{{ asset(options.imagePath) }}" width="250px" data-remove-image alt="image preview">
{% elseif options.mediaType == 'video' %}
<video class="mb-2" width="250px" controls data-remove-image>
<source src="{{ asset(options.imagePath) }}" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>
{% endif %}
{% if options.canRemove %}
<div class="remove-file-btn mb-2">
<a href="javascript:void(0)" data-remove-image-button>Удалить медиа файл</a>
</div>
{# Формируем имя скрытого поля удаления. Для вложенных полей используем full_name и вставляем 'Remove' перед последней ']' #}
{% if options.formWidgetField.vars.full_name is defined %}
{% set full = options.formWidgetField.vars.full_name %}
{% set remove_name = full|slice(0, -1) ~ 'Remove]' %}
{% else %}
{% set remove_name = options.form.vars.name ~ '[' ~ options.formWidgetField.vars.name ~ 'Remove]' %}
{% endif %}
<input name="{{ remove_name }}" type="hidden" data-remove-image-flag>
{% endif %}
{% endif %}
<div class="new-file-input{{ options.imagePath ? " mb-2" }}"{{ options.imagePath ? " hidden" }}>
{{ form_widget(options.formWidgetField, {'attr': {'
required': options.required,
'onchange': "Utils.validateFileSize(this, " ~ options.maxSizeKb ~ ")",
}}) }}
</div>
{% if options.imagePath %}
<a class="upload-new-file-btn" href="javascript:void(0)">Загрузить новый медиа файл</a>
{% endif %}
</div>