Я создаю собственный модуль для выполнения некоторого JS ПОСЛЕ очистки кеша. Вот структура модуля:
Модуль -> flush.info.yml
Название: Флеш
тип: модуль
описание: Очень важный модуль.
пакет: Пользовательский
версия: 1.0
core_version_requirement: ^8 || ^9
Модуль -> flush.libraries.yml
румянец:
версия: 1.х
js:
js/flush.js: {}
зависимости:
- ядро/jquery
- настройки ядра/друпала
Модуль -> флеш.модуль
<?php
используйте Drupal\Core\Form\FormStateInterface;
/**
* Реализация hook_cache_flush()
*/
функция flush_cache_flush() {
\Drupal::state()->set('flush_cache_cleared', TRUE);
}
функция flush_page_attachments (массив и $ вложения) {
если (\Drupal::state()->get('flush_cache_cleared')) {
$attachments['#attached']['library'][] = 'flush/flush';
\Drupal::state()->set('flush_cache_cleared', FALSE);
}
}
Модуль -> JS -> flush.js
(функция ($, Drupal, drupalSettings) {
'использовать строгий';
Drupal.behaviors.flush = {
/**
* Поведение присоединения Drupal.
*/
прикрепить: функция (контекст, настройки) {
this.settings = this.getSettings (настройки);
Сообщить("Смыть!");
console.log("Привет, мир");
},
};
})(jQuery, Drupal, drupalSettings);
Обе функции в flush.module работают правильно, однако JS с #attached, который просто должен использовать alert(), никогда не запускается. Я считаю, что проблема связана именно с этой строкой: $attachments['#attached']['library'][] = 'flush/flush';
Есть ли что-то очевидное, что я делаю неправильно? Я использовал page_attachments в качестве метода для прикрепления JS, потому что он не обязательно должен быть связан с определенной частью страницы или массивом рендеринга и т. д. Пожалуйста, дайте мне знать, если у вас есть какие-либо потенциальные идеи относительно того, в чем может быть проблема. быть, спасибо!