Drupal9的webform模块非常神奇,白龙网刚刚接触时,主要用它开发在线留言表单/功能。随着研究的深入,发现这个模块竟然还可以构建网络投票和调查问卷功能。
一、调查问卷
调查问卷功能一般会用到单选、多选、下拉、文本等功能,这在webform中通过相应字段添加上去即可实现,非常简单。
二、网络投票
网络投票一般是单选,很少会用到多选。而具体表现形式一般有文字、图文两种形式。例如,班级内投票选举班干部,可能会涉及参选人的头像+名字;而诸如你最喜欢哪一门功能的投票,则主要是用到单选的功能。
三、在线留言
在线留言功能平时用的比较多,一般用来收集用户线索。主要会到文本、电话、邮箱等功能,通过拖拽即可轻松实现。
宏观上说,用webform构建在线留言、网络投票、调查问卷表单时,必须要有表单元素添加成功之后,表单才能被访问。反之,如果没有添加相关元素的表单,前端会提示没有权限访问。
此外,如果上述操作之后,仍然无法访问表单,可以根据提示设置相应模块的权限允许指定角色的用户访问即可。如果添加的字段没有在表单“添加元素”元素中出现,则可以在“扩展->webform模块“中启用相应模块即可。Webform模块中常用的元素有23种,如下:
一、单选类型 Radio:可自定义选项,可使用系统自带的选项,每次只可选择其中一个选项; Radios other:可自定义选项,可使用系统自带的选项,每次只可选择其中一个选项,并且用户可以在other选项中输入自己的内容; Entity radios:可以调用实体类型content中的标题作为选项,每次只可选择其中一个选项; 二、多选类型 Checkbox:只有一个复选框,只能勾选一个选项,有点类似于单选Radio,但又与Radio不一样; Checkboxes:可自定义多个复选框,可以使用系统自带的复选框,每次可以选择1至多个筛选框,标题与选项都可以添加描述性信息与帮助文本; Checkboxes other: 可自定义多个复选框,可以使用系统自带的复选框,每次可以选择一至多个筛选框,并且用户可以在other选项中输入自己的内容; Entity checkboxes:可以调用实体类型content中的标题作为选项,每次可选择1至多个选项; Term checkboxes:可以调用分类taxonomy中的术语作为选项,每次可选择一至多个选项; 三、下拉类型 Select:自定义或者使用系统内容作为下拉,每次可选择其中一个内容; Select other:自定义或者使用系统内容作为下拉,每次可选择其中一个内容,并且用户可以额外添加选项; Table select:表格类型的下拉,有全选功能;如果把内容源设置成空,则可以显示背景为灰色的标题; Tableselect sort:表格类型的下拉,有全选、排序功能; Entity select:可以调用实体类型content中的标题作为下拉选项,每次可选择1至多个选项; Term select:可以调用分类taxonomy中的术语作为下拉选项,每次可选择一至多个选项; Image select:下拉内容是图片,可以自定义图片或者使用系统图片作为选项,每次可选择1张图片;使用该功能需要在“扩展”中的启用对应“Webform Image Select”模块; 小结:使用单选、多选、下拉功能时,需要在“扩展”中的启用对应“Webform Options Limit”模块; 四、按钮类型 Buttons:功能与单选类型类同,每次只能选择一个选项;按钮的内容可以是自定义的,或者是来自系统预设的内容;自定义的button需要在在“扩展”中的启用对应“Webform Custom Options”模块,并且选项默认是带框横排排列;系统自带的button默认选项是竖排排列; Buttons other:与button相比,他多了一个other的选项,让用户可以自定义输入相关内容/需求; Submit button(s):用来提交表单; 五、文本类型 Text field:单行文本,可设置规则限定输入内容的格式,可为元素添加描述性文字;可以设置电话、数字、百分比等不同的格式;可以设置帮助、更多等说明性文字;可以通过常规(Input hiding)、高级({value})设置input的默认值(省略号/圆点); Textarea:多行文本,可为元素添加描述性文字; Text format:使用Basic HTML、Full HTML、Plain text、 Restricted HTML等不同的形式输入信息; Basic HTML:用于打印说明性文本信息,需要给予访问权限; Advanced HTML/Text:该类型必须出现在layout中,并且需要给匿名用户访问权限才能在前端页面展示文本内容; 六、邮箱类型 Email:常规邮箱地址; Email confirm:常规邮箱地址; Email multiple:多个邮箱地址,中间以逗号隔开; 七、电话类型 Telephone:可以设置电话属于哪个国家,按照指定国家的格式输入电话号码,否则会报错; Telephone advanced:可以设置电话属于哪个国家,按照指定国家的格式输入电话号码,否则会报错; 八、组合类型 Fieldset:可以包含一组表单元素:层、文本、下拉等; Flexbox layout:包含在Fieldset之中,并且该层可以包含子元素;可以设置层的样式,例如:边距、背景等,以改变不同元素的外观; 两者相结合可以布局更加复杂的在线留言、调查问卷、投票表单; 可以使用元素中条件判断逻辑,用来决定某个元素是否显示,例如,根据根据单选按钮(radio)的值(value)来判断是否显示某个元素;或者根据一个复选框(checkbox)的状态(check/unchedked),来判断某个元素是否显示; 九、文件类型 在setting.php文件配置$settings['file_private_path']目录之后,系统会自动添加如下文件类型,用心上传不同类型的内容: File:上传文件文档、图片、视频、音频等不同类型的文件; Document file:上传文档; Image file:上传图片文件; Video file:上传视频文件; Audio file:上传音频文件; 十、自动类型 Autocomplete:自动联想指定的关键词; Entity autocomplete:自动联想实体的标题; 十一、开关类型 Details:与Fieldset类同,可以包含层、元素等不同类型的内容; 十二、水平类型 Horizontal rule:水平线 十三、复合类型 Likert:横竖两排,二维元素,可以同时把多人、多物操作(例如:投票); 十四、日期类型 Date:日期; Date list:日期列表; Time:时间; Date/Time:日期与时间; 十五、网址类型 url:输入网址; 十六、范围类型 Range:显示数字范围,可以放前缀或者后缀; 十七、评价类型 Rating:好评与差评; 十八、复合类型 Custom composite:与likert 有些类似,是个二维表格,添加一行或者多行二维表格内容;类似于Fieldset、Flexbox、details功能,可以布局、放置多类元素,但是Custom composite也可以包含不同类型的元素,制作表格比较有用; 十九、提示类型 Message:显示一种文字提示,有status、error、warning、infot等4种状态; 二十、行列类型 Mapping:类似于2列多行表格,一列显示源内容,另外一列显示目标内容; 二十一、隐藏类型 Hidden:隐藏输入元素 二十二、颜色类型 Color:颜色选择器; 二十三、编辑类型 CodeMirror:代码编辑器;