注意: 问题表单目前为 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?"