프로그래밍 방식으로 노드 업데이트 코드를 사용하여

다음 코드를 사용하여 노드를 만들 수 있습니다.

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

그러나 노드 ID가 있으면 어떻게 노드를 편집 할 수 있습니까?



답변

이 코드를 사용해보십시오

<?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();

답변

$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);

답변

node_load는 Drupal 8.x에서 더 이상 사용되지 않으며 Drupal 9.0 이전에 제거됩니다. \ Drupal \ node \ Entity \ Node :: load ()를 사용하십시오.

참조 https://api.drupal.org/api/drupal/core%21modules%21node%21node.module/function/node_load/8.3.x


답변

엔티티의 API를 사용하여 업데이트를 수행 할 수 있습니다.

$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);
  }
}

답변

오래된 방법도 저에게 효과적입니다.

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