Đây là cách tôi đã có thể đạt được nó.
Di chuyển đoạn:
id: fup_balance_csv_import
....
....
tiến trình:
trường_upload: trường_upload
trường_tải xuống: trường_tải xuống
trường_total: field_total
điểm đến:
plugin: entity_reference_revisions:đoạn văn
default_bundle: fup_balance
Di chuyển nút:
id: subscribe_list_csv_import
.............
........
tiến trình:
# Trường đoạn văn.
pseudo_field_fup_details:
-
plugin: di chuyển_lookup
di chuyển: fup_balance_csv_import
nguồn: tiêu đề # Mã định danh duy nhất.
trường_fup_details:
-
plugin: sub_ process
nguồn:
- '@pseudo_field_fup_details'
tiến trình:
target_id: '0'
target_revision_id: '1'
Điều này là bằng cách sử dụng Quy trình di chuyển tiêu chuẩn. Đôi khi nó có thể không hữu ích khi bạn cần viết plugin di chuyển của riêng mình. Dưới đây là cách để làm điều đó.
# Trường đoạn văn.
trường_quốc gia_thời_gian:
-
plugin: country_timezones_paragraphs
nguồn:
trường_1: nguồn_trường_1
trường_2: nguồn_trường_2
Plugin di chuyển:
<?php
không gian tên Drupal\countries_list_migration\Plugin\migrate\ process;
sử dụng Drupal\Core\Plugin\ContainerFactoryPluginInterface;
sử dụng Drupal\migrate\MigrateExecutableInterface;
sử dụng Drupal\migrate\ProcessPluginBase;
sử dụng Drupal\di chuyển\Row;
sử dụng Symfony\Component\DependencyInjection\ContainerInterface;
sử dụng Drupal\paragraphs\Entity\Paragraph;
sử dụng Drupal\Core\Logger\LoggerChannelFactoryInterface;
/**
* Cung cấp plugin di chuyển quốc gia_timezones.
*
* Cách sử dụng:
*
* @mã số
* tiến trình:
* quán ba:
* plugin: country_timezones_paragraphs
* nguồn: source_field_name
* @endcode
*
* @MigrateProcessPlugin(
* id = "quốc gia_múi giờ_đoạn",
* handle_multiples = TRUE
* )
*/
class CountryTimezonesParagraphs extends ProcessPluginBase thực hiện ContainerFactoryPluginInterface {
/**
* Dịch vụ ghi nhật ký.
*
* @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
*/
$logger được bảo vệ;
/**
* Xây dựng plugin CountryTimezones.
*
* @param mảng $configuration
* Cấu hình plugin.
* @param chuỗi $plugin_id
* ID plugin.
* @param hỗn hợp $plugin_definition
* Định nghĩa plugin.
* @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger
* Các dịch vụ logger.
*/
hàm công khai __construct(mảng $configuration, $plugin_id, $plugin_definition, LoggerChannelFactoryInterface $logger) {
cha mẹ::__construct($configuration, $plugin_id, $plugin_definition);
$this->logger = $logger->get('countries_list_migration');
}
/**
* {@inheritdoc}
*/
tạo hàm tĩnh công khai (ContainerInterface $container, mảng $configuration, $plugin_id, $plugin_definition) {
trả về tĩnh mới (
cấu hình $,
$plugin_id,
$plugin_definition,
$container->get('logger.factory')
);
}
/**
* {@inheritdoc}
*/
hàm công khai biến đổi($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
$paragraphs =[];
if (isset($value)) {
$paragraphs[] = $this->createCountryTimezonesParagraphsItem($value);
}
trả lại các đoạn $;
}
/**
* {@inheritdoc}
*/
hàm công khai nhiều(): bool {
trả về ĐÚNG;
}
chức năng được bảo vệ createCountryTimezonesParagraphsItem(mảng $item): mảng {
$paragraph = Đoạn::tạo([
'type' => 'country_timezones',
'trường_1' => [
'giá trị' => $item['field_1'],
],
'trường_2' => [
'giá trị' => $item['field_2'],
],
]);
$paragraph->save();
trở lại [
'đích_id' => $paragraph->id(),
'target_revision_id' => $paragraph->getRevisionId(),
];
}
}
Hy vọng hữu ích của nó.