Lorsque je crée un nœud comme celui-ci:
$nodeSetup = [
'nid' => NULL,
'type' => $bundle,
'uid' => $uid,
'revision' => 0,
'status' => 1,
'body' => ['format' => 'full_html', 'value' => Xss::filter($body)],
];
$_node = Node::create($nodeSetup);
la valeur corporelle et le format fonctionnent bien. Mais, lorsque je charge un nœud existant, comment puis-je définir la valeur corporelle en conservant le format? Cela n'a pas fonctionné:
$_node->body->format = 'full_html';
$_node->body->set('format', 'full_html');
$_node->save();
Ce qui suit a fonctionné pour moi,
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
$node->body->value = 'body';
$node->body->format = 'full_html';//omitting this will retain existing format
$node->save();
La solution de Kstack fonctionne. Une autre option consiste à fournir la valeur et le format ensemble dans un tableau comme ceci:
$node = \Drupal::entityTypeManager()->getStorage('node')->load(1);
$node->body->setValue(['value' => 'body', 'format' => 'full_html']);
$node->save();