ノードが更新されたときに、ノードフィールドの値を更新したい。
ここで言及したコードを使用して、ノードDrupal 8をプログラムで更新してみました
use Drupal\node\Entity\Node;
function hello_world_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {
$check = \Drupal::routeMatch()->getParameter('node');
if ($check) {
$node = Node::load($check->nid->value);
$node->title->value = 'testing'; //set value for field
$node->save();
}
}
しかし、うまくいきませんでした。ノードの保存後に500エラーが表示されます。また、ifステートメントを取り出してノードIDを指定してみました$node = Node::load(1);
Drupal 8でプログラムでノード/エンティティを更新することも試しました
use Drupal\node\Entity\Node;
function hello_world_node_update(Drupal\node\NodeInterface $node) {
$node = Node::load(1);
$node->set("title", 'New value'); // also tried $node->setTitle('The new Title');
$node->save();
}
しかし、運もありません。
また、異なるフックentity_presave、entity_update、node_updateを使用してみましたが、違いはありませんでした。