Strapi:根据内容类型中其他字段中的值自动填充字段值

joh*_*ick 2 content-management-system npm strapi

Strapi 版本:v4\n操作系统:macOS\n数据库:MySQL\n节点版本:16.15\nNPM 版本:5.8.8

\n

我正在尝试根据其他字段中的值填充字段。\n示例:我有一个内容类型,其中字段城市 = 孟买,国家/地区 = 印度,现在我需要第三个字段,称为市场,其值应为 Mumbai - India (即城市字段的值 + \xe2\x80\x9c-\xe2\x80\x9d + 国家/地区字段的值)。

\n

我对 Strapi 比较陌生,仍在探索该工具,有人可以帮我吗?

\n

Sal*_*'sa 7

借助 Strapi 的Model Lifecyle Hooks可以非常简单地实现这一点。


第1步: 首先citycounty通过market.Content-Type builder

第 2 步:
现在,您需要创建该字段read-only以确保没有人可以通过管理 UI 手动填充该字段。您可以通过访问收藏中的任何条目,然后单击Configure the view右侧窗格中的选项来完成此操作。

在此输入图像描述

第 3 步:
接下来,单击该market字段的编辑图标。您将看到一个类似于以下屏幕截图的弹出窗口。将该字段设为可编辑false并单击finish。完成此操作后,请确保单击Save页面右上角显示的按钮以永久保存更改。

在此输入图像描述

步骤 4:
接下来,覆盖模型的beforeCreate&beforeUpdate生命周期挂钩,以在创建/更新条目时自动填充市场价值。为此,您必须在以下文件夹中创建生命周期.js 文件:./api/[api-name]/content-types/[content-type-name]/

假设您的收藏名称是Student

// src/api/student/content-types/student/lifecycles.js

module.exports = {
    beforeCreate(event) {
    if (event.params.data.city && event.params.data.country) {
      const { city = "", country = "" } = event.params.data;
      event.params.data.market = city + " - " + country;
    }
  },

  beforeUpdate(event) {
    if (event.params.data.city && event.params.data.country) {
      const { city = "", country = "" } = event.params.data;
      event.params.data.market = city + " - " + country;
    }
  },
};
Run Code Online (Sandbox Code Playgroud)

第5步:
就是这样!重新启动您的 Strapi 服务器并尝试在您的集合中创建或更新新条目。market它应该根据city&值自动填充值country