在管理面板中 - 我有一个 content-type products
,它显示了数据库中的所有产品(MongoDB)
假设我想编辑一个product
并且当我点击Save
按钮时,我想点击一个自定义 API/覆盖更新我的
products
集合的现有端点!
是否可以自定义或覆盖管理面板 API?
在管理面板中 - 我有一个 content-type products
,它显示了数据库中的所有产品(MongoDB)
假设我想编辑一个product
并且当我点击Save
按钮时,我想点击一个自定义 API/覆盖更新我的
products
集合的现有端点!
是否可以自定义或覆盖管理面板 API?
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
只是补充一下ghosh的答案。您还必须复制所依赖的ContentManager.js
依赖项以避免任何错误,如下所示:
扩展/内容管理器/ └────控制器 | │ - ContentManager.js | └────验证/ | - index.js | - 模型配置.js | └──── 服务/ | └──── 工具/ | └──── 配置/ | - 属性.js │ └──── 工具/ - 解析-multipart.js