Drupal 8, 9でコンテンツを保存する際に前処理を挟む

著者
Kato83
作成日
2020/07/12 - 00:22
更新日
2023/03/02 - 13:47

Drupal 8, 9でコンテンツを保存をする際に前処理を挟みたい場合は hook_entity_presave を利用します。

hook_entity_presave | entity.api.php | Drupal 9.0.x | Drupal API

なお、実際にモジュールを開発する際には
{モジュール名}_{前処理をしたいエンティティ名 or entity}_presave
という命名規則になります。

my_module というモジュールを作っていたとして、全てのエンティティに前処理を挟みたい場合は
my_module_entity_presave
となり、コンテンツ(Nodeエンティティ)だけ前処理を挟みたい場合は
my_module_node_presave となる。

実装例

<?php
function my_module_node_presave(Drupal\Core\Entity\EntityInterface $entity){
  // nodeを保存する前に処理を行う
}

引数に関数名で指定したエンティティが渡ってくるので、後はそれを利用して適宜実装を行うといった具合です。

Category