Puncte:0

Migrarea unui câmp în mai multe rânduri

drapel kn

Încerc să migrez codul html în mai multe paragrafe care trebuie să fie legate între ele cumva.Ideea mea este să le pun în legătură ID-ul meu care provine din setul de date, poate folosind acel ID ca a doua sursă. Codul meu creează în prezent mai multe paragrafe, dar nu există nicio legătură între ele. Datele vin din csv și folosesc Drupal 9

TLDR: Cum să mapați o coloană din fișierul csv în mai multe rânduri în tabelul de mapare.

Codul yml (datele sunt codul html)

proces:
  tip:
    plugin: default_value
    default_value: link
  cod de limbă: kieli
  titlu: Nimi
  default_langcode:
    plugin: default_value
    default_value: adevărat
  field_multi_paragraphs:
    - plugin: paragraph_generate
      tip_entitate: paragraf
      sursa: Date #inutile
      value_key: id
      valori:
        field_data: date
destinaţie:
  plugin: 'entity_reference_revisions:paragraph'

Codul care generează paragrafele

/**
 *
 * @MigrateProcessPlugin(
 * id = "paragraph_generate"
 * )
 */
clasa ParagraphGenerate extinde EntityGenerate {

  transformare funcție publică ($valoare, MigrateExecutableInterface $migrateExecutable, Rând $rând, $destinationProperty) {
    $acest->rând = $rând;
    $this->migrateExecutable = $migrateExecutable;

    $rezultat = $this->generateEntity($value);
    returnează $rezultat;
  }

  funcția protejată generateEntity($value) {
    $dom = nou DOMDocument();

    $dom->loadHTML('<?xml encoding="utf-8" ?>' . $value);
    $html = $dom->getElementsByTagName('body')->item(0);
    $returnArray= [];
    foreach ($html->childNodes ca $child) {
      if ($child->tagName === 'p') {
        $paragraf = Paragraf::create([
          'type' => 'text',
          'field_text' => matrice(
            „value” => $child->nodeValue,
            "format" => "simplu"
          ),
        ]);
        $paragraf->salvare();
        $returnArray[] = ['target_id' => $paragraph->id(), 'target_revision_id' => $paragraph->getRevisionId()];
      }
    }

    return empty($returnArray) ? NULL : $returnArray;
  }

}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.