バッジ機能を拡張するプラグインを作成しています。「保存」ボタンが管理者バッジページで押されたときに、追加のコードを実行したいと考えています。
Discourse Javascript:
Discourse hbs:
私のコード 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!!");
});
}
};
これはイニシャライザーです。
- アラートボックス
"Hello! I am an alert box!!がトリガーされ、コードがリロード時に実行されていることを示しています。 - 保存時にコンソール.log行もアラートも実行されないため、オーバーライドが機能していないようです。
- コントローラー名
controller:admin-badges/showはエラーを引き起こしません(ただし、意図的にタイプミスを追加するとエラーが発生するため、実際のコントローラーをターゲットにしていることが示唆されます)。
イニシャライザーが1つだけなので、再現は簡単はずです。何が間違っていますか?