Note
问题表单目前为 beta 版本,可能随时更改。
缺少必需的顶级键 name
模板不包含 name
字段,这意味着在向用户提供选项列表时,不清楚要调用问题模板的内容。
“缺少所需的顶级键 name
”错误的示例
description: "Thank you for reporting a bug!"
...
可以通过添加 name
作为键来修复此错误。
name: "Bug report"
description: "Thank you for reporting a bug!"
...
key
必须是字符串
此错误消息表示已提供允许的键,但由于不支持数据类型,无法分析其值。
“key
必须是字符串”错误的示例
下面的 description
被分析为布尔值,但它应该是字符串。
name: "Bug report"
description: true
...
可以通过提供字符串作为值来修复此错误。 可能需要在字符串两侧加双引号才能成功分析。 例如,必须在包含 '
的字符串两侧加双引号。
name: "Bug report"
description: "true"
...
当字段应为字符串时,也不允许使用空字符串或仅包含空格的字符串。
name: ""
description: "File a bug report"
assignees: " "
...
可以通过将值更正为非空字符串来修复此错误。 如果字段不是必需的,则应删除键值对。
name: "Bug Report"
description: "File a bug report"
...
input
不是允许的键
模板的顶层提供了意外的键。 有关支持哪些顶级键的详细信息,请参阅“议题表单的语法”。
“input
不是允许的键”错误的示例
name: "Bug report"
hello: world
...
可以通过删除意外的键来修复此错误。
name: "Bug report"
...
禁止键
YAML 将某些字符串分析为 Boolean
值。 为了避免这种情况,我们明确禁止使用以下键:
y
, Y
, yes
, Yes
, YES
, n
, N
, no
, No
, NO
, true
, True
, TRUE
, false
, False
, FALSE
, on
, On
, ON
, off
, Off
, OFF
可以通过删除禁止键来修复此错误。
正文必须至少包含一个非 markdown 字段
问题表单必须接受用户输入,这意味着它的至少一个字段必须包含用户输入字段。 markdown
元素是静态文本,因此 body
数组不能只包含 markdown
元素。
“正文必须至少包含一个非 markdown 字段”错误的示例
name: "Bug report"
body:
- type: markdown
attributes:
value: "Bugs are the worst!"
可以通过添加接受用户输入的非 markdown 元素来修复该错误。
name: "Bug report"
body:
- type: markdown
attributes:
value: "Bugs are the worst!"
- type: textarea
attributes:
label: "What's wrong?"
正文必须具有唯一 ID
如果使用 id
属性来区分多个元素,则每个 id
属性必须是唯一的。
“正文必须具有唯一 ID”错误的示例
name: "Bug report"
body:
- type: input
id: name
attributes:
label: First name
- type: input
id: name
attributes:
label: Last name
可以通过更改其中一个输入的 id
,使每个 input
字段都具有唯一的 id
属性来修复该错误。
name: "Bug report"
body:
- type: input
id: name
attributes:
label: First name
- type: input
id: surname
attributes:
label: Last name
正文必须具有唯一标签
当有多个接受用户输入的 body
元素时,每个用户输入字段的 label
属性必须是唯一的。
“正文必须具有唯一标签”错误的示例
name: "Bug report"
body:
- type: textarea
attributes:
label: Name
- type: textarea
attributes:
label: Name
要修复该错误,可以更改其中一个输入字段的 label
属性,确保每个 label
都是唯一的。
name: "Bug report"
body:
- type: textarea
attributes:
label: Name
- type: textarea
attributes:
label: Operating System
输入字段也可以按其 id
属性进行区分。 如果需要重复的 label
属性,则可以提供至少一个 id
来区分具有相同标签的两个元素。
name: "Bug report"
body:
- type: textarea
id: name_1
attributes:
label: Name
- type: textarea
id: name_2
attributes:
label: Name
id
属性在问题正文中不可见。 如果要区分生成的问题中的字段,则应使用不同的 label
属性。
标签太相似
相似的标签可以处理成相同的引用。 如果没有为 input
提供 id
属性,则 label
属性用于生成对 input
字段的引用。 为此,我们将利用 Rails 参数化方法来处理 label
。 在某些情况下,可以将两个不同标签处理为相同的参数化字符串。
“标签太相似”错误的示例
name: "Bug report"
body:
- type: input
attributes:
label: Name?
- type: input
id: name
attributes:
label: Name???????
可以通过将至少一个区别性字母数字字符(-
或 _
)添加到冲突标签之一来修复该错误。
name: "Bug report"
body:
- type: input
attributes:
label: Name?
- type: input
attributes:
label: Your name
也可以通过为其中一个冲突标签提供唯一的 id
来修复该错误。
name: "Bug report"
body:
- type: input
attributes:
label: Name?
- type: input
id: your-name
attributes:
label: Name???????
复选框必须具有唯一标签
当存在 checkboxes
元素时,它的每个嵌套标签在其对等方以及其他输入类型中都必须是唯一的。
“复选框必须具有唯一标签”错误的示例
name: "Bug report"
body:
- type: textarea
attributes:
label: Name
- type: checkboxes
attributes:
options:
- label: Name
可以通过更改其中一个输入的 label
属性来修复该错误。
name: "Bug report"
body:
- type: textarea
attributes:
label: Name
- type: checkboxes
attributes:
options:
- label: Your name
也可以向任何冲突的顶级元素提供一个 id
。 嵌套复选框元素不支持 id
属性。
name: "Bug report"
body:
- type: textarea
id: name_1
attributes:
label: Name
- type: checkboxes
attributes:
options:
- label: Name
id
属性在问题正文中不可见。 如果要区分生成的问题中的字段,则应使用不同的 label
属性。
Body[i]:缺少所需的键类型
每个正文块必须包含键 type
。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的零索引索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:缺少所需的键类型”错误的示例
body:
- attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
可以通过添加具有有效输入类型的键 type
作为值来修复此错误。 有关可用的 body
输入类型及其语法,请参阅“GitHub 表单架构的语法”。
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
Body[i]:x
不是有效的输入类型
其中一个正文块包含的类型值不是允许的类型之一。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:x
不是有效的输入类型”错误的示例
body:
- type: x
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
可以通过将 x
更改为有效类型之一来修复此错误。
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
Body[i]:缺少必需的属性键 value
尚未提供所需的 value
属性之一。 当块没有 attributes
键或 attributes
键下没有 value
键时,会发生此错误。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:缺少所需的属性键 value
”错误的示例
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: markdown
可以通过在 body
的第二个列表元素的 attributes
下添加 value
作为键来修复此示例中的错误。
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: markdown
attributes:
value: "This is working now!"
Body[i]:标签必须是字符串
在其 attributes
块中,值具有错误的数据类型。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:标签必须是字符串”错误的示例
下面的 label
被分析为布尔值,但它应该是字符串。
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: textarea
attributes:
label: Bug Description
- type: textarea
attributes:
label: true
可以通过为 label
提供字符串值来修复此错误。 如果要使用可能会分析为布尔值、整数或小数的 label
值,则应在该值两侧加引号。 例如,应为 "true"
或 "1.3"
,而不是 true
或 1.3
。
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
- type: textarea
attributes:
label: Bug Description
- type: textarea
attributes:
label: Environment Details
当属性应为字符串时,不允许使用空字符串或仅包含空格的字符串。 例如,不允许使用 ""
或 " "
。
如果属性是必需的,该值必须是非空字符串。 如果字段不是必需的,则应删除键值对。
body:
- type: input
attributes:
label: "Name"
Body[i]:id
只能包含数字、字母、-、_
id
属性只能包含字母数字字符、-
和 _
。 模板可能在 id
中包含不允许使用的字符,例如空格。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:id
只能包含数字、字母、-、_”错误的示例
name: "Bug report"
body:
- type: input
id: first name
attributes:
label: First name
可以通过确保从 id
值中删除空格和其他不允许的字符来修复该错误。
name: "Bug report"
body:
- type: input
id: first-name
attributes:
label: First name
Body[i]:x
不是允许的键
在与 type
和 attributes
相同的缩进级别提供了意外的键 x
。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:x
不是允许的键”错误的示例
body:
- type: markdown
x: woof
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
可以通过删除额外的键以及仅使用 type
、attributes
和 id
来修复此错误。
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
Body[i]:label
包含禁止词
为了尽量减少在 GitHub 问题中公开发布私人信息和凭据的风险,在输入或 textarea 元素的 label
中不允许使用一些攻击者常用的词。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:label
包含禁止字”错误的示例
body:
- type: markdown
attributes:
value: Hello world!
- type: input
attributes:
label: Password
可以通过从任何 label
字段中删除“密码”之类的词汇来修复该错误。
body:
- type: markdown
attributes:
value: Hello world!
- type: input
attributes:
label: Username
Body[i]:x
不是允许的属性
attributes
块中提供了无效的键。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:x
不是允许的属性”错误的示例
body:
- type: markdown
attributes:
x: "a random key!"
value: "Thanks for taking the time to fill out this bug!"
可以通过删除额外的键以及仅使用允许的属性来修复此错误。
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug!"
Body[i]:options
必须是唯一的
对于复选框和下拉列表输入类型,options
数组中定义的选项必须是唯一的。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:options
必须是唯一的”错误的示例
body:
- type: dropdown
attributes:
label: Favorite dessert
options:
- ice cream
- ice cream
- pie
可以通过确保 options
数组中不存在重复选项来修复此错误。
body:
- type: dropdown
attributes:
label: Favorite dessert
options:
- ice cream
- pie
Body[i]:options
不得包含保留字 none
“None”是 options
集中的保留字,因为它用于在不需要 dropdown
时表示不进行选择。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:options
不得包含保留字 none”错误的示例
body:
- type: dropdown
attributes:
label: What types of pie do you like?
options:
- Steak & Ale
- Chicken & Leek
- None
validations:
required: true
可以通过删除“None”选项来修复该错误。 如果希望参与者能够表明他们不喜欢这些类型的馅饼,则还可以删除 required
验证。
body:
- type: dropdown
attributes:
label: What types of pie do you like?
options:
- Steak & Ale
- Chicken & Leek
在此示例中,“None”将自动填充为可选选项。
Body[i]:options
不得包含布尔值。 请将“yes”和“true”等值两侧加引号
有许多英文单词会被 YAML 分析程序处理成布尔值,除非它们两侧加上引号。 对于下拉列表 options
,所有项必须为字符串而非布尔值。
带有 body
的错误将以 body[i]
为前缀,其中 i
表示包含错误的主体块的索引。 例如,可以通过 body[0]
得知错误是由 body
列表中的第一个块引起的。
“body[i]:options
不得包含布尔值。 请将“yes”和“true”等值两侧加引号”错误的示例
body:
- type: dropdown
attributes:
label: Do you like pie?
options:
- Yes
- No
- Maybe
可以通过在每个有问题的选项两侧加引号,以防止它们被处理为布尔值来修复错误。
body:
- type: dropdown
attributes:
label: Do you like pie?
options:
- "Yes"
- "No"
- Maybe
主体不能为空
模板主体 key:value
对不能为空。 有关需要哪些顶级键的详细信息,请参阅“议题表单的语法”。
可以通过添加 body:
部分来修复此错误。
“正文不能为空”错误的示例
name: Support Request
description: Something went wrong and you need help?
---
body:
- type: textarea
attributes:
label: "What's wrong?"
在此示例中,可以通过删除标头与 body
部分之间的 ---
(文档分隔符)来修复错误。
name: Support Request
description: Something went wrong and you need help?
body:
- type: textarea
attributes:
label: "What's wrong?"