【发布时间】:2020-10-04 20:21:47
【问题描述】:
在管理面板中 - 我有一个内容类型 products,它显示了数据库 (MongoDB) 中的所有产品
假设我想编辑 product,当我点击 Save 按钮时,我想点击自定义 API/覆盖更新我的现有端点
products收藏!
是否可以自定义或覆盖管理面板 API?
【问题讨论】:
标签: strapi headless-cms
在管理面板中 - 我有一个内容类型 products,它显示了数据库 (MongoDB) 中的所有产品
假设我想编辑 product,当我点击 Save 按钮时,我想点击自定义 API/覆盖更新我的现有端点
products收藏!
是否可以自定义或覆盖管理面板 API?
【问题讨论】:
标签: strapi headless-cms
Strapi admin(strapi-admin) 和 Content manager(strapi-plugin-content-manager) 是分开定义的。
如果您想覆盖/扩展端点;通过定义你想要覆盖的函数来做到这一点:
将控制器定位在:
extensions/
/controllers/ .js
例子:
extensions/content-manager/controllers/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/
/config/routes.json
node_modules/strapi-plugin-content-manager/config/routes.json
文档中的一些基本信息:controllers、customization1 & customization2 和 FAQ
【讨论】:
strapi-plugin 前加上前缀有关 - 正如文档所说!谢谢
只是为了补充 ghosh 的答案。您还必须复制 ContentManager.js 所依赖的依赖项以避免任何错误,如下所示:
【讨论】: