أنا أكتب إضافة لتوسيع وظائف الشارات. عندما يتم الضغط على زر “حفظ” في صفحة الشارات الإدارية، أريد تنفيذ بعض التعليمات البرمجية الإضافية.
جافاسكريبت ديسكورس:
ديسكورس 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!!"، مما يشير إلى أن الكود يتم تشغيله عند إعادة التحميل. - لا يتم تشغيل أي من سطور console.log أو التنبيهات عند الحفظ، مما يشير إلى أن التجاوز لا يعمل؟
- اسم المتحكم لا يعطي خطأ
controller:admin-badges/show(ولكن إضافة خطأ عن قصد يعطي خطأ، مما يوحي بأنني أستهدف متحكمًا حقيقيًا)
يجب أن يكون من السهل تكراره نظرًا لأنه مجرد تهيئة واحدة. ماذا أفعل بشكل خاطئ؟؟