ฉันกำลังพยายามย้ายรหัส html เป็นหลายย่อหน้าที่จำเป็นต้องเชื่อมโยงเข้าด้วยกันความคิดของฉันคือการให้พวกเขาเชื่อมโยง ID ของฉันที่มาจากชุดข้อมูล โดยอาจใช้ ID นั้นเป็นแหล่งที่สอง ขณะนี้รหัสของฉันสร้างหลายย่อหน้า แต่ไม่มีการเชื่อมโยงระหว่างพวกเขา ข้อมูลมาจาก csv และฉันใช้ Drupal 9
TLDR: วิธีแมปหนึ่งคอลัมน์จากไฟล์ csv เป็นหลายแถวในตารางการแมป
รหัส yml (ข้อมูลคือรหัส html)
กระบวนการ:
พิมพ์:
ปลั๊กอิน: default_value
default_value: ลิงก์
รหัสภาษา: kieli
หัวเรื่อง : นิมิ
default_langcode:
ปลั๊กอิน: default_value
default_value: จริง
field_multi_paragraphs:
- ปลั๊กอิน: paragraph_generate
entity_type: ย่อหน้า
ที่มา: Data #useless
value_key: รหัส
ค่า:
field_data: ข้อมูล
ปลายทาง:
ปลั๊กอิน: 'entity_reference_revisions:paragraph'
รหัสที่สร้างย่อหน้า
/**
*
* @MigrateProcessPlugin(
* id = "paragraph_generate"
* )
*/
คลาส ParagraphGenerate ขยาย EntityGenerate {
การแปลงฟังก์ชันสาธารณะ ($value, MigrateExecutableInterface $migrateExecutable, แถว $row, $destinationProperty) {
$this->row = $แถว;
$this->migrateExecutable = $migrateExecutable;
$result = $this->generateEntity($value);
ส่งคืนผลลัพธ์ $;
}
ฟังก์ชันที่มีการป้องกัน createEntity($value) {
$dom = DOMDocument ใหม่ ();
$dom->loadHTML('<?xml encoding="utf-8" ?>' . $value);
$html = $dom->getElementsByTagName('body')->item(0);
$returnArray= [];
foreach ($html->childNodes เป็น $child) {
ถ้า ($child->tagName === 'p') {
$paragraph = ย่อหน้า::create([
'ประเภท' => 'ข้อความ',
'field_text' => อาร์เรย์(
"value" => $child->nodeValue,
"รูปแบบ" => "ธรรมดา"
),
]);
$วรรค->บันทึก();
$returnArray[] = ['target_id' => $paragraph->id(), 'target_revision_id' => $paragraph->getRevisionId()];
}
}
คืนค่าว่าง ($ returnArray) ? NULL : $returnArray;
}
}