2017-02-08 8 views
1

У меня проблема с файловым виджлетом моей формы редактирования.symfony edit form с файлом

В the Symfony documentation, в конце первого абзаца, он говорит:

При создании формы для редактирования уже сохраненное элемент, тип файла формы все еще ожидает, что экземпляр файла. Как сохраненное предприятие в настоящее время содержит только относительный путь к файлу, сначала нужно сцепить настроенный путь загрузки с сохраненным файлом и создать новый класс файла:

use Symfony\Component\HttpFoundation\File\File; 

// ... 

$product->setBrochure(
    new File($this->getParameter('brochures_directory').'/'.$product->getBrochure()) 
); 

Однако, даже если я применяю это в моей форме мой виджет файлов по-прежнему показывает «нет файла» (если мой перевод в порядке). Кроме того, поскольку общая форма должна иметь прикрепленный файл, пользователь должен снова прикрепить файл.

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

EDIT: связанные SO сообщение:. Non blank file input field in Symfony2 form

ответ

0

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

$builder->add('file_preview', 'text', array('label' => 'Existing File', 'required' => false, 'mapped' => false)); 

Или если вы вызываете форму в вашей веточке с помощью отдельных полей, просто добавьте в имени/просмотра
Что-то подобное;.

<div class="my-form"> 
    <div class="{{ obj.file.name }}"</div> 
    <div>{{ form_widget(form.file) }}</div> 
</div> 
+0

Но я не могу сохранить этот виджет и автозаполнять его с ранее загруженным файлом? –

+0

Это не то, как работают файлы в html, они предназначены для добавления нового файла. При редактировании объекта, у которого есть файл, вы игнорируете поле файла и разрешаете другим данным изменять или даете возможность загрузить другой файл. – Rooneyl

+0

Но тогда файл никогда не «NotBlank», если вы можете его отредактировать? Я нахожу это странным, что такая общая вещь не объясняется в doc –