J'utilise des données de JSON pour créer de nouveaux nœuds ou mettre à jour des champs sur des nœuds existants sur mon Drupal 8. Donc, lorsque j'utilise une méthode pour mettre à jour des nœuds, je dois enregistrer dans le tableau identifiant de nœud des nœuds mis à jour et clés des champs avec des valeurs modifiées dans ce nœud.
Une fois la mise à jour terminée, je dois imprimer un tableau avec tous les nœuds de ce type de contenu, où les champs des nœuds mis à jour doivent avoir un style différent (couleur, arrière-plan, etc.).
Donc, si mon ancien nœud a body = "body1"
Et description = "description 1"
Et le nouveau nœud a body = "body2"
Et description = "description 1"
Une fois la mise à jour terminée, je dois obtenir une sortie comme celle-ci:
Voici un exemple:
$node = \Drupal\node\Entity\Node::load($nid);
$node->set("body", 'New body text');
$node->set("description", 'New value');
$node->save();
Toute suggestion?
Remarque : lorsque j'utilise $node->save();
si toutes les valeurs mises à jour sont identiques, rien n'est changé (la date du nœud dans le contenu du panneau d'administration est la même) comme avant la mise à jour), mais si les valeurs sont différentes, je dois stocker l'identifiant du nœud, les clés et les valeurs uniquement des champs modifiés dans le tableau.
Pour définir le statut, vous pouvez utiliser la méthode setPublished () :
fonction publique Node :: setPublished
Définit le statut publié d'un nœud.
Paramètres
bool $ published: [~ # ~] true [~ # ~ ] pour définir ce nœud sur publié, [~ # ~] false [~ # ~] pour le définir sur non publié.
Dans ton cas:
$node = \Drupal\node\Entity\Node::load($nid);
$node->set("body", 'New body text');
$node->set("field_name", 'New value');
$node->setPublished(TRUE);
Enregistrez-vous une nouvelle révision du nœud mis à jour? Peut-être que vous pouvez utiliser le module diff pour voir les changements entre le nœud actuel et précédent? Ce n'est pas une solution approfondie, mais peut-être un pointeur utile pour vous.
N'oubliez pas le nœud-> save () ou vos modifications de nœud seront ignorées.
$node = \Drupal\node\Entity\Node::load($nid);
$node->set("body", 'New body text');
$node->set("field_name", 'New value');
$node->setPublished(TRUE);
$node->save();