Сохранение файла, полученного через форму в Drupal

Вы создали форму с полем типа file, и хотите сохранять файл как сущность друпала при отправке данных формы.

Обычно объявления форм в Drupal 8+ размещаются в виде расширений класса FormBase в каталоге модуля /scr/Form/*.

Этот пример содержит две проблемы.

Разрешаем нужные расширения

Первая связана с тем, что я намеренно разрешил загрузку только csv файлов, которых нет в «стандартном» списке разрешенных для функции file_save_upload.

Поэтому требуется задать нужный нам валидатор.

Временные файлы

Вторая проблема более серьёзная, она заключается в том, что файл сохраняется как временный. И через какое то время (типично — 8 часов) он может быть удален сборщиком мусора в друпал.

Чтобы избежать этого есть как минимум два пути:

Первый — это использование созданного файла в какой то другой сущности, через регистрацию связи сервисом ‘file.usage’.

Второй путь — это напрямую установить флаг permanent для только созданной сущности.

Мало букафф? Читайте есчо !

Изменить http код ответа для кастомной страницы

Октябрь 30, 2023 г.

Когда вы создаёте свою страницу, используя контроллер, то возможности тут же выбрать какой код ответа она возвращает нет. Контроллер занимается только формированием содержания страницы. Таким образом, страница возвращается с кодом 200. Что делать, ...

Читать

Не появляется форма переиндексации на странице /admin/config/search/search-api/index/

Июль 25, 2024 г.

Если ваш view базируется на search API источнике данных, то важно, чтобы данные были проиндексированы. Но иногда форма переиндексации отсутствует на странице ...

Читать

Как добавить css классы в attributes (twig, Drupal)

Май 16, 2024 г.

Порою требуется добавить свои классы в переменную attributes на уровне шаблона (в twig). Переменная attributes - это объект Drupal\Core\Template\Attribute. У него есть нужный нам метод - addClass(). Пример использования: [crayon-695b2342e97f6472102419/]

Читать

Удаление неиспользуемых файлов в Drupal

Октябрь 17, 2024 г.

Особенно полезно, когда вы использовали проект как шаблон для другого сайта и надо почистить данные. Друпал хоть и показывает статистику использования файлов, но удалять файлы не позволяет из реестра /admin/content/files. Напишем небольшой скрипт, ...

Читать
 

Комментарии к «Сохранение файла, полученного через форму в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: