Các móc "post_update" đã được chạy được lưu trữ trong cơ sở dữ liệu, trong key_value
bảng, post_update
bộ sưu tập, nhưng dữ liệu được tuần tự hóa và lúng túng để cập nhật trực tiếp.
Tôi đã sử dụng một số chi tiết từ câu trả lời của @ kiamlaluno để tạo ra một kịch bản drush mà bạn có thể sử dụng để đặt lại một hook. Đây là phiên bản cơ bản ( phiên bản dài hơn ở đây ):
#!/usr/bin/env drush
$key_value = \Drupal::keyValue('post_update');
$update_list = $key_value->get('existing_updates');
$choice = drush_choice($update_list, dt('Which post_update hook do you want to reset?'));
if ($choice) {
$removed_el = $update_list[$choice];
unset($update_list[$choice]);
$key_value->set('existing_updates', $update_list);
drush_print("$removed_el was reset");
} else {
drush_print("Reset was cancelled");
}
Và đây là một ví dụ về giao diện của nó khi bạn chạy nó từ dòng lệnh:
./scripts/reset_hook_post_update_NAME.drush
Which post_update hook do you want to reset?
[0] : Cancel
[1] : system_post_update_add_region_to_entity_displays
[2] : system_post_update_hashes_clear_cache
[3] : system_post_update_recalculate_configuration_entity_dependencies
[4] : system_post_update_timestamp_plugins
[5] : my_module_post_update_example_hook
# The script pauses for user input.
5
my_module_post_update_example_hook was reset