5

在管理面板中 - 我有一个 content-type products,它显示了数据库中的所有产品(MongoDB)

在此处输入图像描述

假设我想编辑一个product并且当我点击Save按钮时,我想点击一个自定义 API/覆盖更新我的 products集合的现有端点!

在此处输入图像描述

是否可以自定义或覆盖管理面板 API?

4

2 回答 2

5

Strapi admin(strapi-admin) 和 Content manager(strapi-plugin-content-manager) 是分开定义的。

如果您想覆盖/扩展端点;通过定义要覆盖的函数来做到这一点,如下所示:

在以下位置找到控制器:

extensions/<plugin-name>/controllers/<controller-to-override-name>.js

例子:

扩展/内容管理器/控制器/ContentManager.js

请注意,名称的“strapi-plugin”部分被删除了!

如何在控制器文件中覆盖和扩展的示例:

'use strict';
module.exports = {
  
  //this is how you destroy count
  async count(ctx) {
    ctx.body = {
      count: 99
    };
  },
  //this is how you extend
  async aFuncThatDoesntExistInOriginalController(ctx) {
     //add logic
  },
};

如果要扩展,则必须添加从路由到控制器和方法的
映射要查看哪个端点映射到控制器中的哪个方法,请查看:

node_modules/<plugin-name>/config/routes.json
node_modules/strapi-plugin-content-manager/config/routes.json

文档中的一些基本信息:控制器自定义 1自定义2以及常见问题解答

于 2020-06-16T13:00:26.893 回答
0

只是补充一下ghosh的答案。您还必须复制所依赖的ContentManager.js依赖项以避免任何错误,如下所示:

扩展/内容管理器/  
└────控制器
| │ -    ContentManager.js
| └────验证/
| - index.js
| - 模型配置.js
|    
└──── 服务/
| └──── 工具/
| └──── 配置/
| - 属性.js
│   
└──── 工具/
    - 解析-multipart.js
于 2020-11-06T10:39:34.603 回答