배지 기능을 확장하는 플러그인을 작성하고 있습니다. 관리자 배지 페이지에서 “저장” 버튼을 누르면 추가 코드를 실행하고 싶습니다.
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!!");
});
}
};
이것은 초기화기(initializer)입니다.
"Hello! I am an alert box!!"알림 창이 트리거되어, 코드가 재로드 시 실행되고 있음을 나타냅니다.- 저장 시 console.log 줄이나 알림이 실행되지 않아, 오버라이딩이 작동하지 않는 것 같습니다.
- 컨트롤러 이름
controller:admin-badges/show는 오류를 발생시키지 않습니다(고의로 오타를 내면 오류가 발생하므로, 실제 컨트롤러를 대상으로 하고 있음을 시사합니다).
초기화기가 하나뿐이므로 재현하기는 쉬울 것입니다. 제가 뭘 잘못하고 있는 것일까요???