ノードの更新後に他のノードのフィールド値を変更するにはどうすればよいですか?

Aug 22 2020

ノードの更新後、接続されているいくつかのノードのフィールド値を変更する必要があります。
私が知っているように、私は無限再帰を形成するhook_entity_update()ので使用できません$node->save()

ノードが更新された後、ノードフィールドを変更するにはどうすればよいですか?(以外hook_cron

回答

2 NoSssweat Aug 23 2020 at 06:01

hook_form_alterまたはhook_form_FORM_ID_alterを使用します

すべての検証に合格した後に実行されるカスタム検証を追加します

$form['actions']['submit']['#submit'][] = 'mymodule_update_referenced_nodes';

次に、その関数で

function mymodule_update_referenced_nodes(&$form, \Drupal\Core\Form\FormStateInterface $form_state){ $field_other = $form_state->getValue('field_other')[0]['value']; $references = $node->get('field_referenced')->referencedEntities(); foreach ($references as $referenced_node) { $referenced_node->field_other->value = $field_other; $referenced_node->save();
  }

}