Ich schreibe ein Plugin, um die Badge-Funktionalität zu erweitern. Wenn auf der Admin-Badge-Seite die Schaltfläche „Speichern“ gedrückt wird, möchte ich zusätzlichen Code ausführen.
Discourse Javascript:
Discourse hbs:
Mein Code discourse/plugins/discourse-badge-extension/assets/javascripts/discourse/initializers/modify-admin-badges-show-controller.js:
import { withPluginApi } from 'discourse/lib/plugin-api';
export default {
name: 'modify-admin-badges-show',
initialize() {
withPluginApi('0.8', api => {
api.modifyClass('controller:admin-badges/show', {
pluginId: 'discourse-badge-extension',
actions: {
save() {
console.log("Custom pre-save logic triggered");
alert("Pre-save logic");
this._super(...arguments); // Call the original save method
console.log("Post-save logic triggered");
alert("Post-save logic");
},
}
});
alert("Hello! I am an alert box!!");
});
}
};
Es ist ein Initialisierer.
- Die Alert-Box
"Hello! I am an alert box!!"wird ausgelöst, was darauf hindeutet, dass der Code beim Neuladen ausgeführt wird. - Weder die console.log-Zeilen noch die Alerts werden beim Speichern ausgeführt, was darauf hindeutet, dass die Überschreibung nicht funktioniert?
- Der Controller-Name gibt keinen Fehler aus
controller:admin-badges/show(aber das absichtliche Hinzufügen eines Tippfehlers tut es, was darauf hindeutet, dass ich einen echten Controller anspreche)
Es sollte einfach zu reproduzieren sein, da es sich nur um einen Initialisierer handelt. Was mache ich falsch???