Рейтинг:0

Перенос одного поля в несколько строк

флаг kn

Я пытаюсь перенести html-код в несколько абзацев, которые нужно как-то связать.Моя идея состоит в том, чтобы они связали мой идентификатор, полученный из набора данных, возможно, используя этот идентификатор в качестве второго источника. Мой код в настоящее время создает несколько абзацев, но между ними нет связи. Данные поступают из csv, и я использую Drupal 9.

TLDR: как сопоставить один столбец из CSV-файла с несколькими строками в таблице сопоставления.

Код yml (данные - это код html)

процесс:
  тип:
    плагин: default_value
    default_value: ссылка
  код языка: kieli
  Название: Ними
  default_langcode:
    плагин: default_value
    default_value: правда
  field_multi_paragraphs:
    - плагин: параграф_генерировать
      entity_type: абзац
      источник: Данные #бесполезно
      ключ_значения: идентификатор
      ценности:
        field_data: Данные
пункт назначения:
  плагин: 'entity_reference_revisions:paragraph'

Код, который генерирует абзацы

/**
 *
 * @MigrateProcessPlugin(
 * id = "параграф_генерировать"
 * )
 */
класс ParagraphGenerate расширяет EntityGenerate {

  публичная функция преобразования ($ значение, MigrateExecutableInterface $ migrateExecutable, строка $ строка, $ destinationProperty) {
    $this->строка = $строка;
    $this->migrateExecutable = $migrateExecutable;

    $result = $this->generateEntity($value);
    вернуть $результат;
  }

  защищенная функция generateEntity($value) {
    $dom = новый DOMDocument();

    $dom->loadHTML('<?xml encoding="utf-8" ?>' . $value);
    $html = $dom->getElementsByTagName('body')->item(0);
    $returnArray=[];
    foreach ($html->childNodes как $child) {
      если ($child->tagName === 'p') {
        $абзац = абзац::создать([
          'тип' => 'текст',
          'field_text' => массив (
            "значение" => $child->nodeValue,
            "формат" => "обычный"
          ),
        ]);
        $абзац->сохранить();
        $returnArray[] = ['target_id' => $paragraph->id(), 'target_revision_id' => $paragraph->getRevisionId()];
      }
    }

    вернуть пустой ($ returnArray)? ПУСТО: $returnArray;
  }

}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.