Je développe un module pour mettre à jour les nœuds (activer la révision). Cela ressemble à ceci.
$nodes = node_load_multiple(array(), array('type' => $bundleType));
foreach ($ndoes as $node){
$w = entity_metadata_wrapper('node',$node);
$w->MyFields->set($someValue);
$w->save();
}
Il définissait correctement les champs mais l'identifiant de révision du nœud ne changeait pas après $w->save()
.
Comment puis-je mettre à jour l'ID de révision?
L'indicateur de création de révision est-il défini sur le nœud pour le type de contenu? Avez-vous essayé comme $ w-> revision-> set (1); avant de sauvegarder? ....
MODIFIER:
L'auteur dit que la configuration de $w->revision->set(1)
résout son problème.
Lorsque vous modifiez un nœud via l'interface utilisateur, cela se fait via node_form()
. Cela a un appel vers le haut pour node_object_prepare()
, qui définit les valeurs par défaut pour ce nœud. Cela inclut la définition de la valeur par défaut de $node->revision
, Qui est utilisée par node_save()
pour déterminer si une nouvelle révision est nécessaire ou non.
L'API Entity est compatible avec les révisions, mais node_object_prepare()
est une chose spécifique au nœud. Cela signifie que vous devez gérer les valeurs vous-même, notamment en définissant la propriété de révision pour imiter ce que fera le formulaire de modification de nœud.
Aucune de ces réponses n'est en fait correcte, faire ->set(1)
donne l'impression que vous changez réellement le numéro de révision et doit donc l'incrémenter.
Ceci est en fait juste un drapeau booléen, donc la bonne réponse est $node->revision->set(true);
Comme le dit zhuchun: il ne comprend pas pourquoi cela est nécessaire, lorsqu'il est expliqué comme un drapeau booléen, il est parfaitement logique plutôt que le nombre.
Si le type de nœud n'a pas de révisions activées par défaut, la façon la plus succincte de demander une nouvelle révision est:
$w->revision = TRUE;
ce qui revient exactement à utiliser:
$w->revision->set(TRUE);
mais avec moins de frappe nécessaire.