Încerc să configurez un modul personalizat care copiază valori dintr-un nod al cărui tip de conținut este A la un nod al cărui tip de conținut este B. În cea mai mare parte, tipurile de conținut au aceleași câmpuri, dar B are câteva câmpuri suplimentare.
A
- Titlu (titlu)
- corp (corp)
- Data (field_date_agenda)
B
- Titlu (titlu)
- corp (corp)
- Data (field_date_agenda)
- Număr de articole (field_int_how_many)
- Trimitere la A (field_noderef_nta)
Cu $cloned_node = $node->createDuplicate()
Pot copia toate câmpurile din A, precum și posibilitatea de a schimba tipul de conținut în B.
De cand A nu are câmpurile suplimentare atașate, createDuplicate()
nu le va copia.
Acum, ceea ce aș dori să fac este să adaug în mod programatic celelalte câmpuri (pe care le voi completa cu niște valori personalizate) la $cloned_node
. Când aceste acțiuni sunt finalizate, $cloned_node->salvare()
va fi folosit pentru finalizarea procesului de clonare.
Pur și simplu adăugați valoarea prin $cloned_node->set("field_int_how_many", $value)
nu pare să facă treaba: se afișează o eroare PHP.
InvalidArgumentException: Câmpul field_int_how_many este necunoscut. în Drupal\Core\Entity\ContentEntityBase->getTranslatedField() (linia 587 din /home/username/domains/domainname.com/public_html/devsite/web/core/lib/Drupal/Core/Entity/ContentEntityBase.php).
Are cineva idee cum să adauge acele câmpuri suplimentare la nodul clonat?