В соответствии с соглашением Drupal, ваш модуль с именем manage_finish_date должен содержать файл manage_finish_date.module, который находится в корневом каталоге и должен выглядеть следующим образом:
<?php
use Drupal\node\Entity\Node;
/**
* Implements hook_ENTITY_TYPE_insert().
*/
function manage_finish_date_node_insert(Node $node) {
ManageFinishDate::update_time();
}
/**
* Implements hook_ENTITY_TYPE_update().
*/
function manage_finish_date_node_update(Node $node) {
ManageFinishDate::update_time();
}
У вас также должен быть другой файл с именем 'src / ManageFinishDate.php ', который должен выглядеть следующим образом:
<?php
namespace Drupal\manage_finish_date;
use Drupal;
use Drupal\node\Entity\Node;
class ManageFinishDate {
public static function update_time($node, $action = 'create') {
// Entity bundles to act on
$bundles = array('to_do_item');
if (in_array($node->bundle(), $bundles)) {
// Load the node and update
$status = $node->field_status->value;
$node_to_update = Node::load($node);
if ($status == 'completed') {
$request_time = Drupal::time();
$node_to_update->set('field_date_finished', $request_time);
$node_to_update->save();
}
}
}
}
Код не проверен, но должен работать.Убедитесь, что имя модуля и пространство имен совпадают, а также имя файла класса и имя класса совпадают для его работы.Также очистите кеш после загрузки.
Это будет обрабатывать только что созданные и обновленные узлы.