Loving Tina? us on GitHub0.0k

文档

学习

v.Latest
Documentation
字段
目录

字段定义了内容结构,以及在编辑器中为特定集合显示的表单字段。

这些字段被分类为字段类型——它们决定了存储的数据以及在编辑器中显示的输入组件。

字段类型的选项包括:

基本类型定义如下所示。某些字段类型通过特定类型的选项扩展了以下类型定义。

类型定义

REQUIRED
name
string

字段的名称。


REQUIRED
type
string

决定使用的数据类型和表单字段。


label
string

在编辑器中显示的集合名称。如果省略,则使用name


description
string

将显示给用户的关于字段的简短描述。


required
boolean

如果为true,则在此字段没有值时禁用保存。

Default is false.

name​Override
string

控制在内容文件中使用的字段名称。


is​Title
boolean

定义字段标题。

仅限String字段。

Default is false.

is​Body
boolean

定义哪个字段保存到Markdown正文中。

仅限Textrich-textstring)字段。

Default is false.

options
array

限制允许的值为给定选项。

仅限Scalar字段。

All properties marked as REQUIRED must be specified for the field to work properly.

名称

在GraphQL模式中使用的字段名称。

在同级字段中应是唯一的。

此名称不能包含空格、破折号或特殊字符。

nameOverride属性可以设置为用于替换内容文件中的字段名称。在其他情况下仍将使用实际的名称属性。

fields: [
{
name: 'my_field',
nameOverride: 'my-field',
//...
},
];

字段标题

isTitle控制在集合页面中为文件显示哪个字段。如果从未设置,将使用文件名。

要使用此属性...

  • 保持它为顶级字段(在collections.fieldscollections.templates.fields中定义)。
  • 在同一字段上设置required为true。
  • 每个集合中仅包含一个字段。

字段(markdown)正文

通常保存在markdown文件中的内容将存储在前置部分。

isBody控制链接到正文部分的字段。

要使用此属性...

  • 字段类型应为rich-textstring
  • 集合应为"mdx""md"格式。
  • 每个集合中仅包含一个字段。

列表字段

指定list: true会创建一个关联字段的数组。

fields: [
{
label: 'Hero Image',
name: 'heroImage',
type: 'image',
list: true,
},
];

ui.max

对象字段类型的列表上设置ui.max,当至少添加了给定数量的元素后,会在编辑器中禁用添加按钮。

这不支持使用模板的对象。

{
type: "object",
label: "对象列表",
name: "objectList",
list: true,
ui: {
max: 3,
},
// ...
}

ui.min 

对于任何列表字段,如果设置了ui.min,则在项目少于最小数量时,删除按钮将变灰(见下图)。

{
type: "string",
label: "羊驼",
name: "llamas",
list: true,
ui: {
min: 3,
}
}

选择字段

任何标量字段都可以接受一个options数组来限制允许的值。这会将编辑器组件更改为下拉菜单或复选框集。

您可以传入一个值数组,或一个结构为以下的对象数组:

选项属性

定义

value

与选项关联的实际值。

label

在编辑器中显示的此选项的名称。

复选框字段

通过同时使用optionslist属性创建一组复选框字段:

fields: [
{
name: 'categories',
type: 'string',
list: true,
options: [
{
value: 'movies',
label: 'Movies',
},
{
value: 'music',
label: 'Music',
},
//...
],
},
];

下拉字段

通过使用options而不使用list属性创建一个下拉字段:

fields: [
{
name: 'categories',
type: 'string',
options: [
{
value: 'movies',
label: 'Movies',
},
{
value: 'music',
label: 'Music',
},
//...
],
},
];

格式化字段值

formatparse定义了控制渲染和保存内容的函数。

在下面的示例中,当用户输入时,他们将看到所有小写字符。当保存时,将是所有大写字符。

// ...fields
{
name: "username",
type: "string",
label: "用户名",
ui: {
// 在每次表单更改时调用,但结果存储在数据中而不是表单值中(保存到文件但不显示给用户)
parse: (val?: string)=>val && val.toUpperCase(),
// 在每次表单更改时调用,结果放回表单的值中(显示给用户)
format: (val?: string)=> (val ? val.toLowerCase() : ""),
},
},

验证字段值

Tina允许使用验证函数ui.validate进行客户端验证。如果值无效,此函数返回一个string错误消息;如果字段有效,则返回null

要在验证中包含表单的其他字段值,可以使用allValues参数。

不兼容引用、对象和富文本字段类型——它们有更复杂的内部结构。

{
label: "标题",
name: "title",
type: "string",
ui: {
validate: (value, allValues) => {
const titleLength = value?.length || 0
const descLength = allValues?.description?.length || 0
if (titleLength >= descLength) {
return '描述必须比标题长'
}
}
}
}

上次编辑: March 26, 2025