Strapi 自定义控制器从管理 UI 执行



我正在为我的一个模型扩展一个创建控制器:

async create(ctx) {
let entity;
if (ctx.is('multipart')) {
const { data, files } = parseMultipartData(ctx);
entity = await strapi.services.complaint.create(data, { files });
} else {
entity = await strapi.services.complaint.create(ctx.request.body);
}
const sanitized = sanitizeEntity(entity, { model: strapi.models.complaint });
strapi.emitToAllUsers('complaint::created', sanitized);
return sanitized;
},

例如,如果我从 Postman 发出请求,它可以正常工作,但是如果用户从管理员 UI 创建新对象,是否可以做同样的事情?

当我从邮递员发送请求时看到来自 Strapi 的控制台时:

debug POST /complaints (58 ms) 200

但是,如果我从管理 UI 创建一个新对象,我会看到以下内容:

debug POST /content-manager/explorer/application::complaint.complaint (1017 ms) 200

有什么想法吗?甚至可能吗?我使用的是最新的 Strapi 版本 (v3( 谢谢

如果你想从Admin UI执行一些东西,我想你可能想看看如何使用生命周期钩子在模型中实现它。

https://strapi.io/documentation/developer-docs/latest/development/backend-customization.html#models

据我所知,控制器只调用API,而服务是一组可重用的功能。模型由 API 和管理 UI 调用。

投诉/模特/投诉.js

module.exports = {
lifecycles: {
afterCreate(result, data) {
strapi.emitToAllUsers('complaint::created', result);
}
}
};

您还可以在服务中创建函数,并将其称为生命周期钩子模型。

最新更新