Как программно создать элемент абзацев?


Как создать пункты элемент программно?

В Drupal 7 я использую следующий код.

    $node = node_load($nid);
    $paragraph = new ParagraphsItemEntity(array('field_name' => 'field_name', 'bundle' => 'para_bundlename'));
    $paragraph->is_new = TRUE;
    $paragraph->field_ptest1['und'][0]['value'] = 'Foo';
    $paragraph->setHostEntity('node', $node);
    $paragraph->save();
    node_save($node);

Но это не работает?

 2
Author: visabhishek, 2016-01-27

3 answers

Да, это было для добавления значения в существующий пункт пункта. Если вы хотите создать новый элемент абзаца с новым значением, попробуйте использовать этот код.

$node = node_load(...);

$paragraph = new ParagraphsItemEntity(array('field_name' => 'name_of_field_in_node', 'bundle' => 'name_of_paragraph_bundle'));
$paragraph->is_new = TRUE;
$paragraph->setHostEntity('node', $node);
$paragraph->field1_name_in_paragraph_bundle[LANGUAGE_NONE][0]['value'] = 'Test Data';
$paragraph->field2_name_in_paragraph_bundle[LANGUAGE_NONE][0]['value'] = 'Test Data';
$paragraph->save();
 3
Author: Sri Harsha, 2016-01-28 06:16:10

Я также столкнулся с аналогичной проблемой, вот как я заставил ее работать, надеюсь, это поможет.

Я заставил его работать с помощью entity_metadata_wrapper.

$raw_node = node_load($nid);
// Wrap it with Entity API
$node = entity_metadata_wrapper('node', $raw_node);
$raw_collection = $node->paragraph_field_name->value();
$collection = entity_metadata_wrapper('paragraphs_item', $raw_collection);
$collection->field_paragraph_item1 = "hurray";
$collection->save();
 1
Author: Sri Harsha, 2016-01-27 14:34:58

Это код, используемый в различных местах для создания сущности в Drupal 7

$node = node_load(...);

$paragraph = new ParagraphsItemEntity(array('field_name' => 'name_of_field_in_node', 'bundle' => 'name_of_paragraph_bundle'));
$paragraph->is_new = TRUE;
$paragraph->setHostEntity('node', $node);
$paragraph->save();

Модуль сбора полей, использующий вместо этого следующий метод

$node = node_load(...);
$entity = entity_create('paragraphs_item', array('field_name' => 'name_of_field_in_node', 'bundle' => 'name_of_paragraph_bundle'));
$entity->setHostEntity('node', $node);
$entity->save();

Оба должны работать нормально. Ваш код мне нравится, просто удалите последнюю строку.

 0
Author: Shabir A., 2016-01-27 13:46:41