Получить значение пакета параграфов (paras_item) для миграции - PullRequest
0 голосов
/ 31 января 2019

Я перемещаю узел с D7 на D8, но мне нужно получить значение тела абзаца и объединить его со значением тела.Вот дамп узла:

object(Drupal\migrate\Row)#1848 (8) {
 ["source":protected]=>
   array(58) {
   ["nid"]=>
      string(6) "657783"
   ["type"]=>
      string(4) "blog"
   ["field_paragraph_body"]=>
array(4) {
  [0]=>
  array(2) {
    ["value"]=>
    string(1) "1"
    ["revision_id"]=>
    string(2) "61"
  }
  [1]=>
  array(2) {
    ["value"]=>
    string(1) "6"
    ["revision_id"]=>
    string(2) "66"
  }
  [2]=>
  array(2) {
    ["value"]=>
    string(2) "11"
    ["revision_id"]=>
    string(2) "71"
  }
  [3]=>
  array(2) {
    ["value"]=>
    string(2) "16"
    ["revision_id"]=>
    string(2) "76"
  }
}
["field_body"]=>
   array(1) {
     [0]=>
   array(2) {
     ["value"]=>
       string(7381) " Quisque velit nisi, pretium ut lacinia in, elementum id enim. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec rutrum congue leo eget malesuada. Donec rutrum congue leo eget malesuada. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Cras ultricies ligula sed magna dictum porta. "
      ["format"]=>
       string(9) "full_html"
   }
  }
 }
}   

Я пытаюсь получить значение из плагина миграции D8, который я написал.ниже приведен соответствующий код:

class MmNodeBlogParagraphToBody extends ProcessPluginBase  {

  /**
 * {@inheritdoc}
 */
public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    $node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
    var_dump($node);
    $body = $row->getSourceProperty("field_body")[0]["value"];
    var_dump($body);
    $para_body[] = $row->getSourceProperty("field_paragraph_body")[0];
    $pbody = (int)$para_body[0]['value'];
    var_dump("value : " . (int)$para_body[0]['value']);  //string(9) "value : 1"
    var_dump("revision_id : " . (int)$para_body[0]['revision_id']);   //string(16) "revision_id : 61"
    $entities = entity_load('paragraph', array(), array($pbody), $reset = FALSE);
    var_dump("entities : " .$entities);   //string(11) "entities : "
    $entitiesrev = entity_load('paragraph', array(), array( (int)$para_body[0]['revision_id']), $reset = FALSE);
    var_dump("entitiesrev : " .$entitiesrev);  //"entitiesrev : "
}
} 

Вот таблицы, связанные с таблицей абзацев:

paragraphs_item table

field_data_field_paragraph_image_right_url table
image_right_url table

field_data_field_paragraph_text_right table
text_right

field_data_field_paragraph_text
paragraph_text

но значения пусты!почему?
У меня есть несколько комплектов:
- image_1colleft_text_1colright,
- text_1col,
- text_1colleft_text_1colright,
- text_1colleft_image_1colright

Как мнеполучить значения этих пунктов абзаца / связки?

...