Я пытаюсь настроить пользовательский модуль, который копирует значения из узла, тип содержимого которого А к узлу, тип содержимого которого Б. По большей части типы контента имеют одни и те же поля, но Б имеет несколько дополнительных полей.
А
- Название (название)
- Тело (тело)
- Дата (field_date_agenda)
Б
- Название (название)
- Тело (тело)
- Дата (field_date_agenda)
- Количество элементов (field_int_how_many)
- Ссылка на А (field_noderef_nta)
С $cloned_node = $node->createDuplicate()
Я могу скопировать все поля из А, а также возможность изменить тип контента на Б.
С А к нему не прикреплены дополнительные поля, создать дубликат ()
не будет их копировать.
Теперь я хотел бы программно добавить другие поля (которые я заполню некоторыми пользовательскими значениями) в $cloned_node
. Когда эти действия завершены, $cloned_node-> сохранить()
будет использоваться для завершения процесса клонирования.
Просто добавив значение через $cloned_node->set("field_int_how_many", $value)
похоже, не помогает: выдается ошибка PHP.
InvalidArgumentException: поле field_int_how_many неизвестно. в Drupal\Core\Entity\ContentEntityBase->getTranslatedField() (строка 587 файла /home/username/domains/domainname.com/public_html/devsite/web/core/lib/Drupal/Core/Entity/ContentEntityBase.php).
Кто-нибудь знает, как добавить эти дополнительные поля в клонированный узел?