Mise à jour par programme d'un nœud

19

Je peux créer un nœud en utilisant le code suivant:

$node = \Drupal::entityTypeManager()->getStorage('node')->create($array);

Mais si j'ai l'ID de nœud, comment puis-je modifier un nœud?

BOES
la source
que voulez-vous éditer? quel champ?
Yusef

Réponses:

23

Vous pouvez essayer ce code

<?php
use Drupal\node\Entity\Node;

$node = Node::load($nid);
//set value for field
$node->body->value = 'body';
$node->body->format = 'full_html';
//field tag
$node->field_tags = [1];
//field image
$field_image = array(
    'target_id' => $fileID,
    'alt' => "My 'alt'",
    'title' => "My 'title'",
);
$node->field_image = $field_image;

//save to update node
$node->save();
MrD
la source
Cette réponse n'est pas la bonne façon, la réponse d'Ivan est la bonne réponse
Kevin
6
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
kiamlaluno
la source
et tel que modifié par exemple le champ personnalisé: es. field_mycustomfield ???
BOES
ou $node = \Drupal::entityManager()->getStorage('node')->load($nid);
JF Kiwad du
1

Vous pouvez utiliser l'API de l'entité pour effectuer les mises à jour.

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

if ($node instanceof NodeInterface) {
  try {
    $node->set('title', 'My Title');
    $node->set('field_textfield', 'My textfield value');
    $node->save();
  }
  catch (\Exception $e) {
    watchdog_exception('myerrorid', $e);
  }
}
hugronaphor
la source
0

L'ancienne méthode fonctionne aussi pour moi:

$node=node_load($nid);
print_r($node->body->format);
$node->body->format='full_html';
print_r($node->body->format);
$node->save();
Boris Ayupov
la source