如何为 Contentful 中的下拉字段设置不同的标签和值
How can I set different label and value for dropdown fields in Contentful
我是 Contentful 的新手,正在尝试创建一个简单的下拉字段,我在其中为每个选项定义了不同的值和标签。但我似乎不知道该怎么做。
我创建了一个下拉菜单,方法是创建一个 短文本字段 ,将 外观 设置为 下拉菜单 并勾选 Accept only specified values under Validation:
但它只允许我设置标签部分,它也会自动用作值。由于我的很多值都转换为枚举,因此普通用户在下拉菜单中使用 TYPE_CAMPAIGN
而不是“Campaign”之类的东西很奇怪。
作为我正在寻找的示例,在 Advanced Custom Fields (WordPress) 中,我可以通过键入 TYPE_CAMPAIGN : Campaign
来完成,结果是 <option value="TYPE_CAMPAIGN">Campaign</option>
在 Contentful 中可以做类似的事情吗?
此处内容丰富的 DevRel。
对于短文本字段,我们不支持此功能。有两种方法可以解决这个用例。
为其创建内容类型
您可以创建一个单独的内容类型并以此方式解决用例。您可以不使用短文本,而是引用这种分隔内容类型的条目。您可以将您的枚举存储在那里,它还有一个优点是您可以在将来使用其他字段扩展它。
使用 App Framework(或 UI 扩展)扩展 Contentful 界面
另一种选择是利用 App Framework。该框架允许您用您的逻辑替换字段(、条目甚至完整页面)。通过这种方式,您可以呈现带有适合的标签和值的 select。
Here is how I did it:
const TestLevel = stationContentType.createField('testLevel', {
name: 'TestLevel',
type: 'Symbol',
required: true,
validations: [specificValueRestriction([TestLevels.testa, TestLevel.testb, TestLevel.testc])]
});
export enum TestLevels {
testa = 'Test A',
testb = 'Test B',
testc = 'Test C',
}
export const specificValueRestriction = (specificValueRestriction: string[]): IValidation =>
({
in: specificValueRestriction
});
And then I used datamappers to map the values to display the strings:
function mapStaffingLevelEnumType(testLevel: string) {
if (testLevel== 'testa')
return TestLevels.testa;
if (testLevel== 'testb')
return TestLevels.testb;
if (testLevel== 'testc')
return TestLevels.testc;
}
我是 Contentful 的新手,正在尝试创建一个简单的下拉字段,我在其中为每个选项定义了不同的值和标签。但我似乎不知道该怎么做。
我创建了一个下拉菜单,方法是创建一个 短文本字段 ,将 外观 设置为 下拉菜单 并勾选 Accept only specified values under Validation:
但它只允许我设置标签部分,它也会自动用作值。由于我的很多值都转换为枚举,因此普通用户在下拉菜单中使用 TYPE_CAMPAIGN
而不是“Campaign”之类的东西很奇怪。
作为我正在寻找的示例,在 Advanced Custom Fields (WordPress) 中,我可以通过键入 TYPE_CAMPAIGN : Campaign
来完成,结果是 <option value="TYPE_CAMPAIGN">Campaign</option>
在 Contentful 中可以做类似的事情吗?
此处内容丰富的 DevRel。
对于短文本字段,我们不支持此功能。有两种方法可以解决这个用例。
为其创建内容类型
您可以创建一个单独的内容类型并以此方式解决用例。您可以不使用短文本,而是引用这种分隔内容类型的条目。您可以将您的枚举存储在那里,它还有一个优点是您可以在将来使用其他字段扩展它。
使用 App Framework(或 UI 扩展)扩展 Contentful 界面
另一种选择是利用 App Framework。该框架允许您用您的逻辑替换字段(、条目甚至完整页面)。通过这种方式,您可以呈现带有适合的标签和值的 select。
Here is how I did it:
const TestLevel = stationContentType.createField('testLevel', {
name: 'TestLevel',
type: 'Symbol',
required: true,
validations: [specificValueRestriction([TestLevels.testa, TestLevel.testb, TestLevel.testc])]
});
export enum TestLevels {
testa = 'Test A',
testb = 'Test B',
testc = 'Test C',
}
export const specificValueRestriction = (specificValueRestriction: string[]): IValidation =>
({
in: specificValueRestriction
});
And then I used datamappers to map the values to display the strings:
function mapStaffingLevelEnumType(testLevel: string) {
if (testLevel== 'testa')
return TestLevels.testa;
if (testLevel== 'testb')
return TestLevels.testb;
if (testLevel== 'testc')
return TestLevels.testc;
}