Symfony2 Входной файл предварительного просмотра фото

У меня есть форма в Symfony2, и в форме у меня есть поле для ввода фотографии, где после загрузки файла фотографии укажите путь, но я бы хотел показать предварительный просмотр загруженной фотографии.

Это код добавления в форме:

->add('photo','file',array(
'attr' => array("class"=>"filestyle",
"data-iconName"=>"glyphicon-inbox",
"data-buttonText"=>"Scegli foto..",
"data-buttonName"=>"btn-primary",
"data-iconName"=>"glyphicon-folder-open"),
'label'=>'user.file.label',
'required'=>false,
)
)

Как я могу сделать для использования метода по изменению или вы можете дать мне способ показать предварительный просмотр загруженного фото ??
Спасибо!!

-2

Решение

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

Вы можете передать атрибут значения изображения из вашей формы с помощью объекта PhotoImage (файл) (я предполагаю, что ваша сущность называется Photo)

'value' => file_exists(IMAGE_PATH.$builder->getData()->getPhotoImage()) ? $builder->getData()->getPhotoImage() : false )

Вот

$builder->getData()->getPhotoImage()

дает вам ваше значение объекта PhotoImage, если таковые имеются и

IMAGE_PATH

константа, которая хранит ваш корневой путь.

теперь ваш код отправляет путь к фотографии в вашу форму. Теперь вы должны получить этот путь и отобразить его клиенту, чтобы найти это условие в файле ветки, чтобы вы могли проверить, является ли значение ложным или нет.

для этого вы должны отобразить свою собственную тему формы, как описано здесь, просто добавьте этот код, как написано ниже — ссылка на сайт

{% if form.vars.block_prefixes[1] == "file" %}
<div class="file-box" {% if form.vars.attr.value is not defined or form.vars.attr.value %}style="background:url('{{form.vars.attr.value}}')"{% endif %}></div>
{% endif %}
{{ form_widget(form) }}
{{ form_label(form) }}

{% if form_errors(form) %}
{{ form_errors(form) }}
{% endif %}

form.vars.block_prefixes[1] == 'file' проверит, является ли это тип файла ввода или нет.

<div class="file-box"> покажет ваше изображение, если у вас есть.

0

Другие решения

Основываясь на ответе Нихила Чаудхари, вы можете показать его в виде:

{% if form.photo.vars.block_prefixes[1] == "file" and form.photo.vars.data %}
<img style="max-width: 100px" src="{{ asset(form.photo.vars.data) }}">
{% endif %}

Вам не нужно проверять файл, потому что вход является файлом, поэтому можете удалить

form.photo.vars.block_prefixes[1] == "file"

блок из кода.

НО, если вы не хотите показывать изменения, используйте jQuery lib или пользовательские функции, как это.

0

По вопросам рекламы [email protected]