# 在 admin badge page 重写 save() 函数遇到困难

**URL:** <https://meta.discourse.org/t/having-a-hard-time-overriding-the-save-function-on-the-admin-badge-page/290831>\
**Category:** Development\
**Created:** [2024 年1 月 8 日 07:59 UTC](https://meta.discourse.org/t/having-a-hard-time-overriding-the-save-function-on-the-admin-badge-page/290831 "2024-01-08T07:59:41Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

作者： ![piffy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/piffy/32/254198_2.png) [@piffy](https://meta.discourse.org/u/piffy)\
发布日期： [2024 年1 月 8 日 07:59 UTC](https://meta.discourse.org/t/having-a-hard-time-overriding-the-save-function-on-the-admin-badge-page/290831/1 "2024-01-08T07:59:41Z")

</div>

我正在编写一个插件来扩展徽章功能。当管理员徽章页面上的“保存”按钮被按下时，我想执行一些额外的代码。

Discourse Javascript：

> <https://github.com/discourse/discourse/blob/d9affeca0a2c1c89f90203051486a16cb5409f23/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js#L150>

Discourse hbs：

> <https://github.com/discourse/discourse/blob/d9affeca0a2c1c89f90203051486a16cb5409f23/app/assets/javascripts/admin/addon/templates/admin-badges/show.hbs#l274>

我的代码 `discourse/plugins/discourse-badge-extension/assets/javascripts/discourse/initializers/modify-admin-badges-show-controller.js`：

```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` 不会引发错误（但故意添加拼写错误会引发错误，这表明我正在定位一个真实的控制器）

鉴于这只是一个初始化器，应该很容易重现。我哪里做错了？？

---

_[View the full topic](https://meta.discourse.org/t/having-a-hard-time-overriding-the-save-function-on-the-admin-badge-page/290831)._
