Strapi 版本:v4 操作系统:macOS 数据库:MySQL 节点版本:16.15 NPM版本:5.8.8
我正在尝试根据其他字段中的值填充字段。 示例:我的内容类型包含字段 city = Mumbai 和 Country = India,现在我需要第三个字段,称为 market,其值应为 Mumbai - India(即城市字段的值 +“-”+国家/地区字段的值)。
我对 Strapi 比较陌生,仍在探索该工具,有人可以帮我吗?
借助 Strapi 的Model Lifecyle Hooks,实现这一点非常简单。
第1步:
首先,通过
city
将 county
、market
和 Content-Type builder
字段添加到您的集合类型。
第2步:
现在,您需要将该字段设置为
read-only
,以确保没有人可以通过管理 UI 手动填充该字段。您可以通过访问收藏中的任何条目,然后单击右侧窗格中的 Configure the view
选项来完成此操作。
第三步:
接下来,单击
market
字段的编辑图标。您将看到一个类似于以下屏幕截图的弹出窗口。将该字段设为可编辑 false
,然后单击 finish
。完成此操作后,请确保单击页面右上角显示的 Save
按钮以永久保存更改。
第四步:
接下来,覆盖模型的
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;
}
},
};
第五步:
就是这样!重新启动您的 Strapi 服务器并尝试在您的集合中创建或更新新条目。它应该根据
market
和 city
值自动填充 country
值。