动态表单
Baklib
发布于:2024-07-07
模板的强大之处就是,你可以动态扩展模板页面的变量,以达到前自定义丰富的展示效果。本次一共发布了 20 个表单组件,覆盖了大部分建站的场景需求:
Checkbox | Paragraph |
Color | Radio |
Background | Range |
Date | Richtext |
Font Picker | Select |
Header | Tag Picker |
Html | Text |
Image Picker | Textarea |
Link | Unknown |
Number | Video Picker |
表单 type: checkbox
Param | Description | Input |
---|---|---|
Id | — | foo |
Label | — | |
Default | — | 0 1 false true |
Info | — |
前端变量值
类型:TrueClass
true
前端变量显示
{{page.settings.foo}}
true
示例:
{
"id": "is_allow_published_at",
"type": "checkbox",
"label": "文章内是否展示发布日期",
"default": true
}
表单 type: color
Param | Description | Input |
---|---|---|
Id | — | color |
Label | — | |
Default | — | #00AA00 |
Colors | — | #FF0000|#00FF00|#0000FF |
Info | — |
前端变量值
类型:String
前端变量显示
{{page.settings.text_color}}
#00AA00
表单 type: color_background
Param | Description | Input |
---|---|---|
Id | — | bg_color |
Label | — | |
Info | — | |
Default | — | {"from":"#0F69E8","to":"#1C0597"} |
Colors | — | rgba(244, 67, 54, 1)|rgba(233, 30, 99, 1) |
前端变量值
类型:DynamicForm::ColorBackgroundComponent::Value
前端变量显示
{{page.settings.bg_color}}
linear-gradient(90deg, #0F69E8, #1C0597)
{{page.settings.bg_color.to}}
#1C0597
{{page.settings.bg_color.degree}}
90
{{page.settings.bg_color.from}}
#0F69E8
表单 type: date
Param | Description | Input |
---|---|---|
Id | — | foo |
Label | — | foo |
Default | — | 2024-01-28 |
Info | — | 这是一个日期选择器 |
前端变量值
类型:Date
"2024-01-28"
前端变量显示
{{page.settings.foo}}
2024-01-28
表单 type: font_picker
Param | Description | Input |
---|---|---|
Id | — | font_name |
Label | — | |
Default | — | arial |
Fonts | — | ["system-ui", "arial"] |
Info | — | 选择一个字体 |
前端变量值
类型:String
"arial"
前端变量显示
{{page.settings.font_name}}
arial
表单 type: header
动态表单分类标题,用于分组表单字段。
Param | Description | Input |
---|---|---|
Content | — |
表单 type: html
Param | Description | Input |
---|---|---|
Id | — | google_ads |
Label | — | 谷歌广告代码 |
Default | — | |
Info | — | 粘贴谷歌广告 HTML 代码 |
前端变量值
类型:ActiveSupport::SafeBuffer
"<strong style=\"color: blue;\">这是蓝色粗体字</strong>"
前端变量显示
{{page.settings.google_ads}}
这是蓝色粗体字
表单 type: image_picker
Param | Description | Input |
---|---|---|
Id | — | |
Label | — | |
Default | — | |
Width | — | 640 |
Height | — | 400 |
Ratio | 比例, 例如 16:9 | 16:9 |
Info | — | 从资源库中选择 |
前端变量值
类型:String
图片路径
前端变量显示
{{page.settings.banner}}
表单 type: link
Param | Description | Input |
---|---|---|
Id | — | foo |
Label | — | 友情链接 |
Default | — | http://www.google.com |
Choices | — | [{"label":"百度","value":"http://www.baidu.com"},{"label":"谷歌","value":"http://www.google.com"},{"label":"必应","value":"http://www.bing.com"}] |
Info | — |
前端变量值
类型:DynamicForm::RadioComponent::Value
"#<DynamicForm::RadioComponent::Value:0x0000000118f413c0 label: \"谷歌\", value: \"http://www.google.com\">"
前端变量显示
{{page.settings.foo}}
谷歌
{{page.settings.foo.value}}
http://www.google.com
{{page.settings.foo.label}}
谷歌
表单 type: number
Param | Description | Input |
---|---|---|
Id | — | price |
Label | — | |
Default | — | 10 |
Min | — | 0 |
Max | — | 10 |
Step | — | 0.5 |
Info | — | 给产品标定一个价格 |
前端变量值
类型:Float
10.0
前端变量显示
{{page.settings.price}}
10.0
表单 type: paragraph
这是一段文字介绍,用于动态表单的说明文字, 支持安全的 HTML 标签,自动过滤 script 标签。
*没有前端变量
Param | Description | Input |
---|---|---|
Content | — |
表单 type: radio
Param | Description | Input |
---|---|---|
Id | — | gender |
Label | — | 性别 |
Default | — | 0 |
Choices | — | [{"label":"保密","value":"0"},{"label":"男","value":"1"},{"label":"女","value":"2"}] |
Info | — |
前端变量值
类型:DynamicForm::RadioComponent::Value
"#<DynamicForm::RadioComponent::Value:0x000000011bf68738 label: \"保密\", value: \"0\">"
前端变量显示
{{page.settings.gender}}
保密
{{page.settings.gender.value}}
0
{{page.settings.gender.label}}
保密
表单 type: range
Param | Description | Input |
---|---|---|
Id | — | distance |
Label | — | 可送范围 |
Default | — | 6.5 |
Min | — | 0 |
Max | — | 10 |
Step | — | 0.5 |
Unit | — | Km |
Info | — | 选择快递可送范围 |
前端变量值
类型:Float
6.5
前端变量显示
{{page.settings.distance}}
6.5
表单 type: richtext
Param | Description | Input |
---|---|---|
Id | — | foo |
Label | — | |
Default | — | |
Info | — | 这是一个HTML输入框 |
前端变量值
类型:ActiveSupport::SafeBuffer
"<strong style=\"color: blue;\">HTML源代码会被转义</strong>"
前端变量显示
{{page.settings.foo}}
HTML源代码会被转义
表单 type: select
select 选项有三种情况:默认下拉框、分组下拉框、多选下拉框。
default(默认)
Param | Description | Input |
---|---|---|
Id | — | company_size |
Label | — | 公司规模 |
Default | — | 1 |
Choices | — | [{"label":"10 人以下","value":"0"},{"label":"10~50人","value":"1"},{"label":"50~200人","value":"2"},{"label":"200~1000人","value":"3"},{"label":"1000以上","value":"4"}] |
Info | — |
模前端变量显示
{{page.settings.company_size}}
10~50人
{{page.settings.company_size.value}}
1
{{page.settings.company_size.label}}
10~50人
Grouped(分组)
Param | Description | Input |
---|---|---|
Id | — | city |
Label | — | 城市 |
Default | — | km |
Choices | — | [{"group":"四川省","label":"成都市","value":"cd"},{"group":"四川省","label":"德阳市","value":"dy"},{"group":"云南省","label":"昆明市","value":"km"},{"group":"云南省","label":"大理市","value":"dl"}] |
Info | — | 选择您所在的城市 |
前端变量显示
{{page.settings.city}}
昆明市
{{page.settings.city.value}}
km
{{page.settings.city.label}}
昆明市
multiple(多选)
Param | Description | Input |
---|---|---|
Id | — | city |
Label | — | 城市 |
Default | — | ["km", "dl"] |
Choices | — | [{"group":"四川省","label":"成都市","value":"cd"},{"group":"四川省","label":"德阳市","value":"dy"},{"group":"云南省","label":"昆明市","value":"km"},{"group":"云南省","label":"大理市","value":"dl"}] |
Info | — | 选择您所在的城市 |
表单 type: tag_picker
Param | Description | Input |
---|---|---|
Id | — | tag |
Label | — | 产品标签 |
Default | — | |
Multiple | — | true |
Info | — |
前端变量值
类型:Array
[
]
前端变量显示
{{page.settings.tag}}
[]
表单 type: text
Param | Description | Input |
---|---|---|
Id | — | |
Label | — | |
Default | — | |
Info | — |
前端变量值
类型:ActiveSupport::SafeBuffer
"<strong style="color: blue;">HTML源代码会被转义</strong>"
前端变量显示
{{page.settings.foo}}
<strong style="color: blue;">HTML源代码会被转义</strong>
表单 type: textarea
Param | Description | Input |
---|---|---|
Id | — | foo |
Label | — | foo |
Default | — | |
Rows | — | 4 |
Info | — | 这是一个HTML输入框 |
前端变量值
类型:ActiveSupport::SafeBuffer
"<strong style="color: blue;">HTML源代码会被转义</strong>"
前端变量显示
{{page.settings.foo}}
<strong style="color: blue;">HTML源代码会被转义</strong>
表单 type: video_picker
Param | Description | Input |
---|---|---|
Id | — | my_video |
Label | — | 宣传视频 |
Default | — | |
Height | — | |
Width | — | 480 |
Ratio | — | 16:9 |
Info | — | 从资源库中选择视频 |
前端变量值
类型:String
视频地址
前端变量显示
{{page.settings.my_video}}