所以我有一个自定义的Drupal 8迁移,我们从XML导入节点 - 一切都很棒。现在我想添加一个预导入功能,以便在迁移之前。在Drupal 7 Migrate中有preImport() - 什么是Drupal 8方法?我发现这篇关于Events added to migration process的文章,但我仍然不清楚如何继续...感谢任何提示!
答案 0 :(得分:1)
您需要创建自己的活动订阅者,此处为简短指南:https://www.chapterthree.com/blog/how-to-register-event-subscriber-drupal8
这是EventSubscriber的一个具体示例(my_migration / src / EventSubscriber / PreImportEvent.php):
<?php
namespace Drupal\my_migration\EventSubscriber;
use Drupal\migrate\Event\MigrateEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Class PreImportEvent
*
* @package Drupal\my_migration\EventSubscriber
*/
class PreImportEvent implements EventSubscriberInterface {
/**
* @return mixed
*/
public static function getSubscribedEvents() {
$events[MigrateEvents::PRE_IMPORT][] = [
'preImport',
0,
];
return $events;
}
/**
* @param $event
*/
public function preImport($event) {
// Do whatever you want with $event
}
}
现在您需要为EventSubscriber注册服务(my_migration / my_migration.services.yml):
services:
my_migration.subscriber.pre_import:
class: Drupal\my_migration\EventSubscriber\PreImportEvent
tags:
- { name: event_subscriber }
注意:如果您需要更改每个字段的迁移,最好使用进程插件(https://www.drupal.org/docs/8/api/migrate-api/migrate-process-plugins)。