💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 表单组件 ### [](https://octobercms.com/docs/backend/forms#form-widgets)表单组件 尽管插件通常会提供自己的自定义表单小部件,但标准包含各种表单小部件。您可以在“[表单小部件”](https://octobercms.com/docs/backend/widgets#form-widgets)文章中阅读更多内容。 * [代码编辑器](https://octobercms.com/docs/backend/forms#widget-codeeditor) * [颜色选择器](https://octobercms.com/docs/backend/forms#widget-colorpicker) * [数据表](https://octobercms.com/docs/backend/forms#widget-datatable) * [日期选择器](https://octobercms.com/docs/backend/forms#widget-datepicker) * [上传文件](https://octobercms.com/docs/backend/forms#widget-fileupload) * [Markdown编辑器](https://octobercms.com/docs/backend/forms#widget-markdowneditor) * [媒体搜寻器](https://octobercms.com/docs/backend/forms#widget-mediafinder) * [嵌套表格](https://octobercms.com/docs/backend/forms#widget-nestedform) * [记录查找器](https://octobercms.com/docs/backend/forms#widget-recordfinder) * [关系](https://octobercms.com/docs/backend/forms#widget-relation) * [直放站](https://octobercms.com/docs/backend/forms#widget-repeater) * [丰富的编辑器/所见即所得](https://octobercms.com/docs/backend/forms#widget-richeditor) * [敏感](https://octobercms.com/docs/backend/forms#widget-sensitive) * [标签清单](https://octobercms.com/docs/backend/forms#widget-taglist) ### [](https://octobercms.com/docs/backend/forms#widget-codeeditor)代码编辑器 `codeeditor`\-呈现用于格式代码或标记的纯文本编辑器。请注意,这些选项可以由后端为管理员定义的代码编辑器首选项继承。 ~~~ css_content: type: codeeditor size: huge language: html ~~~ | 选项 | 描述 | | --- | --- | | **language** | 代码语言,例如php,css,js,html。默认值:php。 | | **showGutter** | 显示带有行号的装订线。默认值:true。 | | **wrapWords** | 将长行换成新行。默认为true。 | | **fontSize** | 文字字体大小。默认值:12 | ### [](https://octobercms.com/docs/backend/forms#widget-colorpicker)颜色选择器 `colorpicker`\-呈现控件以选择十六进制颜色值。 ~~~ color: label: Background type: colorpicker ~~~ | 选项 | 描述 | | --- | --- | | **availableColors** | 可用颜色列表。 | | **allowEmpty** | 允许输入值为空。默认值:false | 有两种方法可以为选色器提供可用的颜色。第一种方法`availableColors`直接将YAML文件中的十六进制颜色代码列表定义为: ~~~ color: label: Background type: colorpicker availableColors: ['#000000', '#111111', '#222222'] ~~~ 第二种方法使用在模型类中声明的特定方法。此方法应以与上述示例相同的格式返回十六进制颜色的数组。此方法的第一个参数是字段名称,第二个参数是字段的当前值,第三个参数是整个表单的当前数据对象。 ~~~ color: label: Background type: colorpicker availableColors: myColorList ~~~ 在模型类中提供可用的颜色: ~~~ public function myColorList($fieldName, $value, $formData) { return ['#000000', '#111111', '#222222'] } ~~~ 如果`availableColors`YAML文件中未定义该字段,则颜色选择器将使用一组20种默认颜色。 ### [](https://octobercms.com/docs/backend/forms#widget-datatable)数据表 `datatable`\-呈现可编辑的记录表,格式为网格。单元格内容可以直接在网格中进行编辑,从而可以管理几行和几列信息。 > \*\*注意:\*\*为了与模型一起使用,应将字段定义为一个`jsonable`属性,或定义为可以处理存储数组数据的另一个属性。 ~~~ data: type: datatable adding: true btnAddRowLabel: Add Row Above btnAddRowBelowLabel: Add Row Below btnDeleteRowLabel: Delete Row columns: [] deleting: true dynamicHeight: true fieldName: null height: false keyFrom: id recordsPerPage: false searching: false toolbar: [] ~~~ #### 表配置 以下列出了数据表窗口小部件本身的配置值。 | 选项 | 描述 | | --- | --- | | **adding** | 允许将记录添加到数据表中。默认值:`true`。 | | **btnAddRowLabel** | 为“在上方添加行”按钮定义自定义标签。 | | **btnAddRowBelowLabel** | 为“在下面添加行”按钮定义自定义标签。 | | **btnDeleteRowLabel** | 为“删除行”按钮定义自定义标签。 | | **columns** | an array representing the column configuration of the data table. See the*Column configuration*section below. | | **deleting** | allow records to be deleted from the data table. Default:`false`. | | **dynamicHeight** | if`true`, the data table's height will extend or shrink depending on the records added, up to the maximum size defined by the`height`configuration value. Default:`false`. | | **fieldName** | defines a custom field name to use in the POST data sent from the data table. Leave blank to use the default field alias. | | **height** | the data table's height, in pixels. If set to`false`, the data table will stretch to fit the field container. | | **keyFrom** | the data attribute to use for keying each record. This should usually be set to`id`. Only supports integer values. | | **postbackHandlerName** | 指定用于发送数据表内容的AJAX处理程序名称。设置为`null`(默认)时,将从包含数据表的表单使用的请求名称中自动检测处理程序名称。建议将此设置为`null`。 | | **recordsPerPage** | 每页显示的记录数。如果设置为`false`,则分页将被禁用。 | | **searching** | 允许通过搜索框搜索记录。默认值:`false`。 | | **toolbar** | 表示数据表的工具栏配置的数组。 | #### 列配置 数据表窗口小部件允许通过`columns`配置变量将列指定为数组。每列应使用字段名称作为键,并使用以下配置变量来设置字段。 例: ~~~ columns: id: type: string title: ID validation: integer: message: Please enter a number name: type: string title: Name ~~~ | 选项 | 描述 | | --- | --- | | **type** | 此列单元格的输入类型。必须是下列之一:`string`,`checkbox`,`dropdown`或`autocomplete`。 | | **options** | 仅用于`dropdown`和`autocomplete`列-这指定AJAX处理程序,它将以数组形式返回可用选项。数组键用作选项的值,而数组值用作选项标签。 | | **readOnly** | 此列是否为只读。默认值:`false`。 | | **title** | 定义列的标题。 | | **validation** | 一个数组,用于指定对列单元格内容的验证。请参阅下面的“\*列验证”\*部分。 | | **width** | 定义列的宽度,以像素为单位。 | #### 列验证 可以根据以下验证类型来验证列单元格。验证应指定为一个数组,并将验证类型用作键,并将可选消息指定`message`为该验证的属性。 | 验证方式 | 描述 | | --- | --- | | **float** | 将数据验证为浮点型。`allowNegative`可以提供可选的布尔属性,以允许负浮点数。 | | **integer** | 将数据验证为整数。`allowNegative`可以提供可选的布尔属性,允许使用负整数。 | | **length** | 验证数据是否具有一定长度。必须提供一个整数`min`和`max`属性,代表必须输入的最小和最大字符数。 | | **regex** | 根据正则表达式验证数据。`pattern`必须提供一个字符串属性,定义用于测试数据的正则表达式。 | | **required** | 验证在保存之前必须输入数据。 | ### [](https://octobercms.com/docs/backend/forms#widget-datepicker)日期选择器 `datepicker`\-呈现用于选择日期和时间的文本字段。 ~~~ published_at: label: Published type: datepicker mode: date ~~~ | 选项 | 描述 | | --- | --- | | **mode** | 预期的结果,日期,日期时间或时间。默认值:日期时间。 | | **format** | 提供明确的日期显示格式。例如:Ymd | | **minDate** | 可以选择的最短/最早日期。默认值:2000-01-01 | | **maxDate** | 可以选择的最大/最新日期。默认值:2020-12-31 | | **firstDay** | 一周的第一天。默认值:0(星期日)。 | | **showWeekNumber** | 在行首显示星期数。默认值:false | | **ignoreTimezone** | 完全按照显示的日期和时间存储日期和时间,而忽略后端指定的时区首选项。 | ### [](https://octobercms.com/docs/backend/forms#widget-fileupload)上传文件 `fileupload`\-呈现图像或常规文件的文件上传器。**字段名称必须使用attachOne或attachMany关系。** ~~~ avatar: label: Avatar type: fileupload mode: image imageHeight: 260 imageWidth: 260 thumbOptions: mode: crop offset: - 0 - 0 quality: 90 sharpen: 0 interlace: false extension: auto ~~~ | 选项 | 描述 | | --- | --- | | **mode** | 预期的文件类型,文件或图像。默认值:图像。 | | **imageWidth** | 如果使用图像类型,则图像将被调整为该宽度,可选。 | | **imageHeight** | 如果使用图像类型,图像将被调整为该高度,可选。 | | **fileTypes** | 上传者接受的文件扩展名(可选)。例如:`zip,txt` | | **mimeTypes** | 上传者接受的MIME类型,可以是文件扩展名或完全限定名称(可选)。例如:`bin,txt` | | **maxFilesize** | 上传者接受的文件大小(Mb),可选。默认值:来自“ upload\_max\_filesize”参数值 | | **useCaption** | 允许为文件设置标题和描述。默认值:true | | **prompt** | 上载按钮显示的文本,仅适用于文件,可选。 | | **thumbOptions** | 传递给文件的缩略图生成方法的选项 | | **attachOnUpload** | 如果存在父记录,则在上传时自动附加上载的文件,而不是使用延迟绑定在保存父记录时附加。默认为false。 | ### [](https://octobercms.com/docs/backend/forms#widget-markdowneditor)Markdown编辑器 `markdown`\-呈现降价格式文本的基本编辑器。 ~~~ md_content: type: markdown size: huge mode: split ~~~ | 选项 | 描述 | | --- | --- | | **mode** | 预期的查看模式(制表符或拆分)。默认标签页。 | ### [](https://octobercms.com/docs/backend/forms#widget-mediafinder)媒体搜寻器 `mediafinder`\-呈现一个用于从媒体管理器库中选择项目的字段。展开该字段将显示媒体管理器以找到文件。结果选择是一个字符串作为文件的相对路径。 ~~~ background_image: label: Background image type: mediafinder mode: image ~~~ | 选项 | 描述 | | --- | --- | | **mode** | 预期的文件类型,文件或图像。默认值:文件。 | | **prompt** | 未选择任何项目时显示的文本。该`%s`字符代表的媒体管理器图标。 | | **imageWidth** | 如果使用图像类型,则预览图像将以该宽度显示(可选)。 | | **imageHeight** | 如果使用图像类型,则预览图像将显示为此高度,可选。 | > \*\*注意:\*\*与“[文件上载”表单窗口小部件不同](https://octobercms.com/docs/backend/forms#widget-fileupload),“媒体查找器”表单窗口小部件将其数据存储为字符串,该字符串表示在“媒体库”中选择的图像的路径。 ### [](https://octobercms.com/docs/backend/forms#widget-nestedform)嵌套表格 `nestedform`\-将嵌套表单呈现为该字段的内容,以包含的字段数组的形式返回数据。 > \*\*注意:\*\*为了与模型一起使用,应将字段定义为一个`jsonable`属性,或定义为可以处理存储数组数据的另一个属性。 ~~~ content: type: nestedform usePanelStyles: false form: fields: added_at: label: Date added type: datepicker details: label: Details type: textarea title: label: This the title type: text tabs: meta_title: lable: Meta Title tab: SEO color: label: Color type: colorpicker tab: Design secondaryTabs: is_active: label: Active type: checkbox logo: label: Logo type: mediafinder mode: image ~~~ 嵌套表单支持与表单本身相同的语法,包括制表符和secondaryTabs。jsonsable属性具有表单定义的结构。甚至可以在嵌套表单中使用嵌套表单。 | 选项 | 描述 | | --- | --- | | **form** | 与[表格定义](https://octobercms.com/docs/backend/forms#form-fields)相同[](https://octobercms.com/docs/backend/forms#form-fields) | | **usePanelStyles** | 定义是否应用外观类似的面板(默认为true) | ### [](https://octobercms.com/docs/backend/forms#widget-recordfinder)记录查找器 `recordfinder`\-呈现一个包含相关记录详细信息的字段。展开该字段将显示一个弹出列表,以搜索大量记录。仅受单数关系支持。 ~~~ user: label: User type: recordfinder list: ~/plugins/rainlab/user/models/user/columns.yaml recordsPerPage: 10 title: Find Record prompt: Click the Find button to find a user keyFrom: id nameFrom: name descriptionFrom: email conditions: email = "bob@example.com" scope: whereActive searchMode: all searchScope: searchUsers useRelation: false modelClass: RainLab\User\Models\User ~~~ | 选项 | 描述 | | --- | --- | | **keyFrom** | 在用于键的关系中使用的列的名称。默认值:id。 | | **nameFrom** | 在用于显示名称的关系中使用的列名称。默认值:名称。 | | **descriptionFrom** | 在用于显示描述的关系中使用的列名。默认值:描述。 | | **title** | 文本显示在弹出窗口的标题部分。 | | **prompt** | 没有选择记录时显示的文本。该`%s`字符代表的搜索图标。 | | **list** | 配置数组或对列表列定义文件的引用,请参阅[列表列](https://octobercms.com/docs/backend/lists#list-columns)。 | | **recordsPerPage** | 每页显示的记录,无页使用0。默认值:10 | | **conditions** | 指定要应用于列表模型查询的原始where查询语句。 | | **scope** | 指定在**相关表单模型中**定义的[查询范围方法](https://octobercms.com/docs/database/model#query-scopes),以始终应用于列表查询。第一个参数将包含小部件将其值附加到的模型,即父模型。 | | **searchMode** | 将搜索策略定义为包含所有单词,任何单词或确切短语。支持的选项:所有,任何,确切。默认值:全部。 | | **searchScope** | 指定在**相关表单模型中**定义的[查询范围方法](https://octobercms.com/docs/database/model#query-scopes)以应用于搜索查询,第一个参数将包含搜索项。 | | **useRelation** | 用于将字段名称用作关系名称以直接在父模型上进行交互的标志。默认值:true。禁用仅返回所选模型的ID | | **modelClass** | useRelation = false时用于列出记录的模型的类 | ### [](https://octobercms.com/docs/backend/forms#widget-relation)关系 `relation`\-根据字段关系类型呈现下拉列表或复选框列表。单个关系显示一个下拉列表,多个关系显示一个复选框列表。用于显示每个关系的标签来自`nameFrom`或`select`定义。 ~~~ categories: label: Categories type: relation nameFrom: title ~~~ 或者,您可以使用自定义`select`语句填充标签。任何有效的SQL语句在这里都有效。 ~~~ user: label: User type: relation select: concat(first_name, ' ', last_name) ~~~ 您还可以提供模型作用域,以用于使用该`scope`属性过滤结果。 | 选项 | 描述 | | --- | --- | | **nameFrom** | 用于显示关系标签的模型属性名称。默认值:名称。 | | **select** | 用于名称的定制SQL select语句。 | | **order** | 用于对选项进行排序的order子句。范例:`name desc`。 | | **emptyOption** | 没有可用选择时显示的文本。 | | **scope** | 指定在**相关表单模型中**定义的[查询范围方法](https://octobercms.com/docs/database/model#query-scopes),以始终应用于列表查询。 | ### [](https://octobercms.com/docs/backend/forms#widget-repeater)直放站 `repeater`\-呈现其中定义的一组重复的表单字段。 ~~~ extra_information: type: repeater titleFrom: title_when_collapsed form: fields: added_at: label: Date added type: datepicker details: label: Details type: textarea title_when_collapsed: label: This field is the title when collapsed type: text ~~~ | 选项 | 描述 | | --- | --- | | **form** | 表单域定义文件的参考,请参阅[后端表单域](https://octobercms.com/docs/backend/forms#form-fields)。内联字段也可以使用。 | | **prompt** | 用于创建按钮的文本。默认值:添加新项目。 | | **titleFrom** | 项目中用作折叠项目标题的字段名称。 | | **minItems** | 所需的最少物品。不使用组时预显示这些项目。例如,如果您设置\*\*“ minItems:1”,\*\*则第一行将显示而不是隐藏。 | | **maxItems** | 转发器中允许的最大项目数。 | | **groups** | 引用一组将转发器置于组模式的表单字段(请参见下文)。也可以使用内联定义。 | | **style** | 申请重复项目的行为方式。可以是下列之一:`default`,`collapsed`或`accordion`。有关更多信息,请参见下面的“\*\*中继器样式”\*\*部分。 | ~~~ content: type: repeater prompt: Add content block groups: $/acme/blog/config/repeater_fields.yaml ~~~ 这是一个组配置文件的示例,该文件位于\*\*/plugins/acme/blog/config/repeater\_fields.yaml中\*\*。另外,这些定义可以在转发器内联指定。 ~~~ textarea: name: Textarea description: Basic text field icon: icon-file-text-o fields: text_area: label: Text Content type: textarea size: large quote: name: Quote description: Quote item icon: icon-quote-right fields: quote_position: span: auto label: Quote Position type: radio options: left: Left center: Center right: Right quote_content: span: auto label: Details type: textarea ~~~ 每个组必须指定一个唯一键,并且该定义支持以下选项。 | 选项 | 描述 | | --- | --- | | **name** | 组的名称。 | | **description** | 小组的简要说明。 | | **icon** | 为该组定义一个图标(可选)。 | | **fields** | 属于该组的[表单字段](https://octobercms.com/docs/backend/forms#form-fields),请参阅[后端表单字段](https://octobercms.com/docs/backend/forms#form-fields)。 | > **注意**:组密钥与保存的数据一起作为`_group`属性存储。 #### 中继器样式 `styles`转发器小部件的属性控制转发器项目的行为。开发人员可以使用三种不同类型的样式: * \*\*默认值:\*\*显示页面加载时扩展的所有转发器项目。这是当前的默认行为,如果在中继器小部件的配置中未定义样式,则将使用此行为。 * \*\*折叠:\*\*在页面加载时将所有转发器项目显示为折叠(最小化)。用户可以根据需要折叠或展开项目。 * \*\*手风琴:\*\*仅显示第一个转发器项在负载下已扩展,其他所有项都已折叠。展开另一个项目时,任何其他展开的项目都将折叠,从而有效地使其一次只能展开一个项目。 ### [](https://octobercms.com/docs/backend/forms#widget-richeditor)丰富的编辑器/所见即所得 `richeditor`\-呈现用于格式丰富的文本的可视编辑器,也称为WYSIWYG编辑器。 ~~~ html_content: type: richeditor toolbarButtons: bold|italic size: huge ~~~ | 选项 | 描述 | | --- | --- | | **toolbarButtons** | 在编辑器工具栏上显示哪些按钮。 | 可用的工具栏按钮为: ~~~ fullscreen, bold, italic, underline, strikeThrough, subscript, superscript, fontFamily, fontSize, |, color, emoticons, inlineStyle, paragraphStyle, |, paragraphFormat, align, formatOL, formatUL, outdent, indent, quote, insertHR, -, insertLink, insertImage, insertVideo, insertAudio, insertFile, insertTable, undo, redo, clearFormatting, selectAll, html ~~~ > **注意**:`|`将在工具栏中插入垂直分隔线,在`-`水平插入线。 ### [](https://octobercms.com/docs/backend/forms#widget-sensitive)敏感 `sensitive`\-呈现一个可显示的密码字段,该字段可用于敏感信息,例如API密钥或机密,配置值等。可以根据用户的请求切换显示和隐藏敏感字段。 包含先前输入值的敏感字段将在加载时用占位符值替换该值,以防止按长度猜测或复制该值。揭示该值后,原始值将由AJAX检索并填充到该字段中。 ~~~ api_secret: type: sensitive allowCopy: false hideOnTabChange: true ~~~ | 选项 | 描述 | | --- | --- | | **allowCopy** | 在敏感字段中添加“复制”操作,允许用户复制密码而不显示密码。默认值:false | | **hiddenPlaceholder** | 设置用于模拟隐藏的,未公开的值的占位符文本。您可以将其更改为长字符串或短字符串以模拟不同的长度值。默认:`__hidden__` | | **hideOnTabChange** | 如果为true,则在用户导航到其他选项卡或最小化其浏览器时,敏感字段将自动隐藏。默认值:true | ### [](https://octobercms.com/docs/backend/forms#widget-taglist)标签清单 `taglist`\-渲染一个用于输入标签列表的字段。 ~~~ tags: type: taglist separator: space ~~~ 标签列表支持将选项定义为[下拉字段类型](https://octobercms.com/docs/backend/forms#field-dropdown)的相同方法。 ~~~ tags: type: taglist options: - Red - Blue - Orange ~~~ 您可以在字段名称是[多对多](https://octobercms.com/docs/database/relations#many-to-many)**关系的情况**下使用被`mode`调用的[关系](https://octobercms.com/docs/database/relations#many-to-many)。这将通过该关系自动获取和分配标签。如果支持自定义标签,则会在分配之前创建它们。[](https://octobercms.com/docs/database/relations#many-to-many) ~~~ tags: type: taglist mode: relation ~~~ | 选项 | 描述 | | --- | --- | | **mode** | 控制如何返回值(字符串,数组或关系)。默认值:字符串 | | **separator** | 用指定字符(逗号或空格)分隔标签。默认值:逗号 | | **customTags** | 允许用户手动输入自定义标签。默认值:true | | **options** | 指定预定义选项的方法或数组。设置为true以使用模型`get*Field*Options`方法。可选的。 | | **nameFrom** | 如果使用关系模式,则显示标签名称的模型属性名称。默认值:名称 | | **useKey** | 使用键代替值来保存和读取数据。默认值:false |