Creez un modul personalizat pentru a executa niște JS DUPĂ ștergerea memoriei cache. Iată structura modulului:
Modul -> flush.info.yml
nume: Flush
tip: modul
descriere: Un modul foarte important.
pachet: Personalizat
versiune: 1.0
cerinta_versiune_core: ^8 || ^9
Modul -> flush.libraries.yml
culoare:
versiunea: 1.x
js:
js/flush.js: {}
dependențe:
- core/jquery
- core/drupalSettings
Modul -> flush.module
<?php
utilizați Drupal\Core\Form\FormStateInterface;
/**
* Implementarea hook_cache_flush()
*/
funcția flush_cache_flush() {
\Drupal::state()->set('flush_cache_cleared', TRUE);
}
funcția flush_page_attachments(array &$attachments) {
if (\Drupal::state()->get('flush_cache_cleared')) {
$attachments['#attached']['library'][] = 'spașare/încărcare';
\Drupal::state()->set('flush_cache_cleared', FALSE);
}
}
Modul -> JS -> flush.js
(funcție ($, Drupal, drupalSettings) {
„utilizați strict”;
Drupal.behaviors.flush = {
/**
* Comportamentul de ataşare Drupal.
*/
atașați: funcție (context, setări) {
this.settings = this.getSettings(setari);
alert("bush!");
console.log („Bună ziua, lume”);
},
};
})(jQuery, Drupal, drupalSettings);
Ambele funcții din flush.module funcționează corect, totuși JS-ul care este # atașat și care pur și simplu ar trebui să folosească un alert() nu rulează niciodată. Cred că problema este legată în special de această linie: $attachments['#attached']['library'][] = 'spașare/încărcare';
Este ceva evident că fac greșit? Am folosit page_attachments ca metodă de atașare a JS, deoarece nu trebuie neapărat asociat cu o anumită parte a paginii sau cu o matrice de randare etc. Vă rugăm să-mi spuneți dacă aveți idei potențiale cu privire la problema. fii, multumesc!