Tôi đang tạo một mô-đun tùy chỉnh để thực thi một số JS SAU KHI xóa bộ đệm. Đây là cấu trúc của mô-đun:
Mô-đun -> flush.info.yml
tên: tuôn ra
loại: mô-đun
mô tả: Một mô-đun rất quan trọng.
gói: Tùy chỉnh
phiên bản: 1.0
core_version_requirement: ^8 || ^9
Mô-đun -> flush.libraries.yml
tuôn ra:
phiên bản: 1.x
js:
js/flush.js: {}
phụ thuộc:
- lõi/jquery
- lõi/drupalSettings
Mô-đun -> flush.module
<?php
sử dụng Drupal\Core\Form\FormStateInterface;
/**
* Triển khai hook_cache_flush()
*/
hàm flush_cache_flush() {
\Drupal::state()->set('flush_cache_cleared', TRUE);
}
hàm flush_page_attachments(mảng &$attachments) {
if (\Drupal::state()->get('flush_cache_cleared')) {
$attachments['#attached']['library'][] = 'flush/flush';
\Drupal::state()->set('flush_cache_cleared', FALSE);
}
}
Mô-đun -> JS -> flush.js
(hàm ($, Drupal, drupalSettings) {
'Sử dụng nghiêm ngặt';
Drupal.behaviors.flush = {
/**
* Hành vi đính kèm Drupal.
*/
đính kèm: chức năng (bối cảnh, cài đặt) {
this.settings = this.getSettings(cài đặt);
cảnh báo ("tuôn ra!");
console.log("Xin chào thế giới");
},
};
})(jQuery, Drupal, drupalSettings);
Cả hai chức năng trong flush.module đều hoạt động bình thường, tuy nhiên, JS được #attached vốn được cho là sử dụng một cảnh báo () không bao giờ chạy. Tôi tin rằng vấn đề có liên quan cụ thể đến dòng này: $attachments['#attached']['library'][] = 'flush/flush';
Có điều gì đó rõ ràng tôi đang làm sai? Tôi đã sử dụng page_attachments làm phương thức để đính kèm JS vì nó không nhất thiết phải được liên kết với một phần cụ thể của trang hoặc mảng kết xuất, v.v. Vui lòng cho tôi biết nếu bạn có bất kỳ ý tưởng tiềm năng nào về vấn đề có thể xảy ra được, cảm ơn!