|-- modules | `-- custom | `-- mes_migrations | |-- migrations | | `-- mig_test_1.yml | `-- mes_migrations.info.yml
modules/custom/mes_migrations/mes_migrations.info.yml
name: Mes Migrations type: module package: Custom description: Premier test de migration core_version_requirement: ^10 dependencies: - drupal:migrate
modules/custom/mes_migrations/migrations/mig_test_1.yml
id: mig_test_1 label: Migration Test 1 source: plugin: embedded_data data_rows: - unique_id: 1 creative_title: 'Page importée #1' engaging_content: 'Texte de la page importée #1' - unique_id: 2 creative_title: 'Page importée #2' engaging_content: 'Texte de la page importée #2' - unique_id: 3 creative_title: 'Page importée #3' engaging_content: 'Texte de la page importée #3' ids: unique_id: type: integer process: title: creative_title body: engaging_content destination: plugin: 'entity:node' default_bundle: page
Activer ce module (Migrate sera également activé s'il ne l'est pas déjà).
Voir le status des migrations :
vendor/bin/drush migrate:status
Exécuter une migration (ou plusieurs) :
vendor/bin/drush migrate:import mig_test_1
Si aucun plugin n'est défini, c'est le plugin get qui est utilisé par défaut :
process: title: creative_title body: engaging_content
Plugin get :
source: ... process: title: plugin: get source: creative_title body: plugin: get source: engaging_content
Plugin default_value :
process: type: plugin: default_value default_value: page destination: plugin: 'entity:node' # plus besoin de spécifier la propriété "default_bundle" puisqu'on # a défini une valeur pour le champ "type".
Plugin concat :
source: plugin: embedded_data data_rows: - unique_id: 1 first_name: 'Marc' last_name: 'Lebrun' process: title: plugin: concat source: - first_name - last_name delimiter: ' '
Plugin callback :
process: title: plugin: callback source: first_name callable: ucwords # callable est une fonction PHP
Chaînage de plugins :
process: title: - plugin: concat source: - first_name - last_name delimiter: ' ' - plugin: callback callable: ucwords # le paramètre "source" du plugin callback n'est pas nécessaire # lorsqu'il fait partie d'une chaîne de plugins