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

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

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

Подключение своих стилей для CKEditor 5 в Drupal

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

Чтобы добавить в редактор свои стили, обычно следуют гайду, который реализует hook mymodule_library_info_alter. При создании своих модулей для CKE5/D10, я так же пользовался данной статьей из документации. Но проблема была в том, что тот модуль, ...

Читать

Подготовить библиотеки требуемые модулем webform

Март 21, 2024 г.

Webform объявляет множество библиотек, которые может использовать в webform.libraries.yml. Но устанавливать их предлагается так или иначе самостоятельно, т.к. их наличие ожидается в папке /libraries. Использование merge плагина Помимо описания ...

Читать

 

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

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



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