web-dev-qa-db-fra.com

Comment définir le format de texte d'un champ dans un objet nœud?

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();
2
Alex

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();
5
Kstack

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();
2
Barrett