【问题标题】:Strapi custom controller execute from Admin UIStrapi 自定义控制器从管理 UI 执行
【发布时间】:2020-09-19 08:11:16
【问题描述】:

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

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 创建新对象,是否可以这样做?

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

debug POST /complaints (58 ms) 200

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

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

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

【问题讨论】:

    标签: strapi headless-cms


    【解决方案1】:

    如果您想从 Admin UI 执行某些操作,我想您可能想看看如何使用生命周期钩子在模型中实现它。

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

    据我所知,控制器只调用 API,而服务是一组可重用的函数。 API 和 Admin UI 都调用模型。

    投诉/模型/complaint.js

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-26
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2014-03-01
      • 1970-01-01
      相关资源
      最近更新 更多