Strapi 自定义控制器从管理员执行 UI
Strapi custom controller execute from Admin 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 发出请求,它工作正常,但是如果用户从 Admin UI 创建新对象,是否可以这样做?
当我从 Postman 发送请求时看到来自 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
据我所知,controller 只调用 API,而 service 是一组可重用的函数。模型由 API 和管理员 UI.
调用
complaint/models/complaint.js
module.exports = {
lifecycles: {
afterCreate(result, data) {
strapi.emitToAllUsers('complaint::created', result);
}
}
};
您还可以在服务中创建一个函数并将其称为模型生命周期挂钩。
我正在为我的一个模型扩展创建控制器:
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 发出请求,它工作正常,但是如果用户从 Admin UI 创建新对象,是否可以这样做?
当我从 Postman 发送请求时看到来自 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
据我所知,controller 只调用 API,而 service 是一组可重用的函数。模型由 API 和管理员 UI.
调用complaint/models/complaint.js
module.exports = {
lifecycles: {
afterCreate(result, data) {
strapi.emitToAllUsers('complaint::created', result);
}
}
};
您还可以在服务中创建一个函数并将其称为模型生命周期挂钩。