show
Возвращает HTML и JavaScript для вывода контрола выбора и загрузки файлов.
Метод подключает JS-расширение fileinput, подготавливает данные о текущих файлах
и создает JS-экземпляр BX.UI.FileInput.
Синтаксис
public function show($values = array(), $getDataFromRequest = false)
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
$values |
array|int|string |
[] |
Текущие значения файлов. Можно передать идентификатор файла, массив с данными файла, путь к временному файлу или массив значений для нескольких полей. |
$getDataFromRequest |
bool |
false |
Если передано true, дополнительные свойства файла берутся из текущего запроса.
|
Возвращаемое значение
Возвращает строку с HTML-разметкой и JavaScript-кодом контрола.
Описание
Метод анализирует переданные значения файлов и формирует элементы для уже сохраненных файлов, временных файлов или файлов, выбранных в текущем запросе. Для изображений дополнительно подготавливаются ссылки на просмотр и превью.
Если после AJAX-загрузки файл сохраняется через CFile::SaveFile, проверьте значение
tmp_name. Оно может указывать на файл во временной директории в относительном виде.
Перед сохранением значение должно соответствовать существующему физическому пути к файлу.
Не используйте жестко заданный путь /upload/tmp: временная директория определяется
настройками продукта.
Если в имени поля используется маркер #IND#, метод определяет максимальный индекс
из переданных значений и передает его в JS-контрол, чтобы новые элементы продолжили нумерацию.
Пример вывода контрола
<?php
echo \Bitrix\Main\UI\FileInput::createInstance([
'id' => 'webform_photos',
'name' => 'FILE[n#IND#]',
'description' => false,
'upload' => true,
'allowUpload' => \Bitrix\Main\UI\FileInput::UPLOAD_EXTENTION_LIST,
'allowUploadExt' => 'jpg,jpeg,png',
'delete' => true,
'edit' => false,
'maxCount' => 0,
'maxSize' => 1024 * 1024 * 10,
])->show($files, false);
?>
Очистка выбранных файлов в JavaScript
После вызова show на странице создается объект BX.UI.FileInput.
Его можно получить по JS-идентификатору контрола и удалить все выбранные файлы методом
deleteFiles.
<script>
BX.ready(function() {
var button = BX('cancel_button');
if (button)
{
BX.bind(button, 'click', function() {
var fileInput = BX.UI.FileInput.getInstance('bx_file_webform_photos');
if (fileInput)
{
fileInput.deleteFiles();
}
});
}
});
</script>
В примере bx_file_webform_photos сформирован из параметра id => 'webform_photos'.
Если параметр id не задан, идентификатор строится из имени поля, поэтому для программного
управления контролом рекомендуется всегда передавать явный id.
Важно. Метод deleteFiles очищает контрол на странице и добавляет служебные
поля удаления для уже привязанных файлов. Физическое удаление сохраненных файлов выполняется
при серверной обработке отправленной формы. Если пользователь нажал кнопку отмены и форма не
отправляется, для удаления уже сохраненных файлов нужен отдельный серверный обработчик.