Как подставить файл-источник при запуске миграции из 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.

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

Чем заменить drupal_mkdir() в Drupal 10

Февраль 22, 2024 г.

В Drupal 10 множество функций работы с файловой системой было собрано в сервис file_system. В том числе и drupal_mkdir была перенесена туда. В общем случае это выглядит для D10 вот так: [crayon-68c9a10b7d9a1006514051/]

Читать

Перевод месяцев formatted datetime в Drupal

Март 8, 2024 г.

Недавно изучал вопрос: как правильно переводить месяцы (в коротком и длинном варианте) в полях типа datetime в Drupal. Короткий ответ - через UI translation. ...

Читать

Добавляем настройки к js плагину CKEditor 5 в Drupal

Март 19, 2024 г.

Когда вы настраиваете форматы текстов, то кроме добавления иконок в toolbar wysiwyg, вы можете видеть набор настроек для разных плагинов CKEditor. Посмотрим ...

Читать

Создание параграфов из CSV файла

Февраль 27, 2024 г.

Параграфы, оторванные от родительской entity нам не нужны, потому эта миграция является дочерней к рассматриваемому примеру миграции статей блога из CSV. Из всего набора полей источника нам требуется только два поля - это id и body. migrate_plus.migration.custom_text_to_paragraph.yml ...

Читать
 

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

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



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