Рейтинг:0

Программно добавить значение в многозначное/повторяющееся поле в весе/индексе

флаг cn

В Drupal 8 у меня есть тип контента и несколько узлов, которые имеют поле «Абзац» с неограниченным количеством значений, поэтому мне нужно программно добавить абзац по индексу к существующим значениям в поле. Я знаю, что в виджете редактора форм я могу добавить значение поля, а затем перетащить поле в нужном мне порядке или изменить вес, а затем сохранить содержимое.

В настоящее время я загружаю узел и добавляю значение так

    $paragraph_node = Абзац::создать($поля);
    $paragraph_node->сохранить();

    $node = Node::load($nid);

    $node->field_paragraph_repeater->appendItem(
      [
        'target_id' => $paragraph_node->id(),
        'target_revision_id' => $paragraph_node->getRevisionId(),
      ]
    );

    $узел->сохранить();

но это только добавляет значение в конце, как я могу добавить это с весом?

Рейтинг:0
флаг in

Вы можете получить значения поля в виде массива, а затем использовать array_splice чтобы вставить новое значение там, где вы хотите. Видеть Вставить новый элемент в массив в любую позицию в PHP.

$values ​​= $node->get('field_paragraph_repeater')->getValue();
$ дополнение = [
  'target_id' => $paragraph_node->id(),
  'target_revision_id' => $paragraph_node->getRevisionId(),
];
$дополнение_индекс = 3;

// Вставьте новое значение в ваш массив $values.
array_splice($values, $addition_index, 0, [$addition]);

// Установите значение на вашем узле и сохраните.
$node->set('field_paragraph_repeater', $values);
$узел->сохранить();

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

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