Как подставить файл-источник при запуске миграции из CSV файла

При работе с migration API в друпал, в документации предполагается, что вы задаёте файл в секции source как значение path. (Подразумевается, что вы используете модуль migrate_source_csv).

Хотелось бы делать это через интерфейс, а не конфигурационные файлы. Т.е. идеальный процесс такой, что пользователь выбирает файл через форму миграции, запускается процесс миграции и пользователь видит этот процесс как стандартную batch — обработка в Drupal (аналогично тому как, например, выглядит загрузка переводов при установке модуля).

Всё это можно устроить и делается небольшими усилиями, т.к. batch процесс уже является частью миграции, а сами миграции — это расширение над ConfigEntityBase и работать с ними довольно легко из кода.

Cоздадим форму /src/Form/MigrationCSV.php, которая позволит выбрать файл и запустить миграцию данных из CSV файла.

Я сразу привел весь код файла, т.к. форма очень проста и единственное интересное место — это то, так подставить файл, указанный пользователем в конфигурацию миграции.

MIGRATION_ID — это машинное имя вашей миграции. Если миграция происходит в несколько этапов (есть дочерние миграции), то файл нужно подставить во все конфигурации миграции, использующие его.

Т.к. миграция происходит в виде batch процесса, то CSV файл нужно где то сохранить. Функция file_save_upload позволяет переместить файл в public папку, при этом он получает статус temporary (временный). Нам этого достаточно, чтобы успешно прошла миграция. А через несколько часов (обычно 8 часов) файл будет удален сборщиком мусора Drupal.

Написать комментарий

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

Миграция картинки по URL в Media поле (Drupal)

Март 3, 2024 г.

Мне нужен был обработчик для migration API, который создаёт media entity по URL и возвращает его ID. Обработчики представляют из себя расширения ProcessPluginBase, которые нужно размещать в папке /src/Plugin/migrate/process вашего модуля. Файл ...

Читать

Конфигурация для миграции статей (node:blog) из CSV файла

Март 2, 2024 г.

Это пример миграции данных из CSV файла в Drupal. Данная миграция является основной в том смысле, что она ссылается на дочернюю миграцию, в ходе которой будут созданы параграфы (entity_reference_revisions:paragraph) с HTML контентом. А далее мы ...

Читать

 

Комментарии к «Как подставить файл-источник при запуске миграции из CSV файла»

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



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