Grav - 表单
您可以使用此链接中提供的form插件创建表单。搜索表单插件并将其安装在您的 Grav 文件夹中。
您也可以使用命令$ bin/gpm install Form安装此插件。导航到 Grav 的根文件夹并输入此命令。它将自动下载表单插件并安装必要的依赖项。
创建简单表单
您可以创建一个简单的表单,该表单可以在页面 YAML 前言中定义。以下是表单的示例 −
--- title: Contact Form form: name: contact fields: - name: name label: Name placeholder: Enter your name autofocus: on autocomplete: on type: text validate: required: true - name: email label: Email placeholder: Enter your email address type: email validate: required: true - name: message label: Message placeholder: Enter your message type: textarea validate: required: true - name: g-recaptcha-response label: Captcha type: captcha recatpcha_site_key: 6LelOg4TAAAAALAt1CjjjVMxFLKY8rrnednYVbr8 recaptcha_not_validated: 'Captcha not valid!' validate: required: true buttons: - type: submit value: Submit - type: reset value: Reset process: - email: subject: "[Site Contact Form] {{ form.value.name|e }}" body: "{% include 'forms/data.html.twig' %}" - save: fileprefix: contact- dateformat: Ymd-His-u extension: txt body: "{% include 'forms/data.txt.twig' %}" - message: Thank you for getting in touch! - display: thankyou ---
上面的代码显示了带有姓名、电子邮件、消息和验证码字段的简单表单页面。填写表单后提交信息时,表单将通过在 YAML 前置内容中添加 process 字段进行处理,如代码所示。
process 字段使用以下信息 −
email 选项使用两个字段,例如 from 字段指定电子邮件的发件人,to 字段指定邮件的收件人。
subject 使用 [feedback][entered mail] 选项,其中电子邮件发送到输入的电子邮件。
电子邮件正文在主题文件夹中的 forms/data.html.twig 文件中指定。
表单输入数据存储在 user/data 文件夹下。模板在主题文件夹中的 forms/data.txt.twig 文件中定义。
在 thankyou/ 子文件夹下创建一个子页面,当用户提交表单时,该页面将被重定向到该页面。
您可以将一些字段与表单插件一起使用,如下表所示 −
Sr.No. | 字段 &描述 |
---|---|
1 | Captcha 这是一个反垃圾邮件字段,用于计算以确定用户是否为人类。 |
2 | Checkbox 它显示一个简单的复选框。 |
3 | Checkboxes 它显示多个复选框。 |
4 | Date 和 Datetime 两个字段分别用于显示日期和日期以及时间。 |
5 | 这是一个带有验证的电子邮件字段。 |
6 | Hidden 它指定隐藏字段。 |
7 | Password 指定密码字段。 |
8 | Radio 显示简单的单选按钮。 |
9 | Select 提供选择字段。 |
10 | Spacer 允许向表单添加标题、文本或水平线。 |
11 | Text 显示简单的文本字段。 |
12 | Textarea 显示简单的文本区域字段。 |
13 | Display 显示文本或说明字段,而不是输入字段。 |
字段参数
每个字段都接受以下参数,这些参数可用于自定义表单的外观。
Sr.No. | 参数 &描述 |
---|---|
1 | label 定义标签字段。 |
2 | validate.required 使元素成为必需元素。 |
3 | validate.pattern 指定验证模式。 |
4 | validate.message 验证失败时显示消息。 |
5 | type 定义字段类型。 |
6 | default 定义默认字段类型。 |
7 | size 显示字段大小,如大、超小、中、长、小。 |
8 | name 定义字段名称。 |
9 | classes 使用带有 css 类的字符串。 |
10 | id 定义字段id。 |
11 | style 指定字段的样式。 |
12 | title 定义字段的标题。 |
13 | disabled 它确定字段是否处于禁用状态。 |
14 | placeholder 它是在用户输入值之前显示在输入字段中的简短提示。 |
15 | autofocus 它指定输入元素在页面加载时应自动获得焦点。 |
16 | novalidate 指定提交时不应验证表单数据。 |
17 | readonly 它将字段确定为只读状态。 |
18 | 自动完成 当用户开始在字段中输入时,它会显示字段中的选项,并根据之前输入的值显示值。 |
某些字段包含特定参数,例如 −
Sr.No. | 参数 &描述 |
---|---|
1 | date 和 datetime 这些字段使用 validate.min 和 validate.max 设置最小值和最大值。 |
2 | spacer 它使用 下划线 添加 <hr> 标签,使用 text 添加文本值并使用 title 作为 <h3>标签。 |
3 | select 它使用multiple参数添加多个值。 |
4 | select 和 checkboxes 它使用options字段来设置可用的选项。 |
5 | display 它使用content参数来显示内容。它将 markdown 设置为 true 以显示内容。 |
6 | captcha 它使用 recatpcha_site_key 和 recaptcha_not_validated 参数。 |
关于 Captcha 的说明
我们在名为 g-recaptcha-response 的字段下有关于 captcha 信息的代码,如下所示 −
- name: g-recaptcha-response label: Captcha type: captcha recatpcha_site_key: 6LelOg4TAAAAALAt1CjjjVMxFLKY8rrnednYVbr8 recaptcha_not_validated: 'Captcha not valid!' validate: required: true
reCaptcha 用于保护您的网站免受垃圾邮件和滥用。它使用 recatpcha_site_key 选项并在您的网站上显示小部件。要使用 reCaptcha,只需参考 reCaptcha 文档。如果 reCaptcha 不正确,它将使用 recaptcha_not_validated 选项显示消息。
表单操作
电子邮件
您可以在 process 字段下发送带有特定选项的电子邮件,如下所示 −
- email: from: "{{ config.plugins.email.from }}" to: "{{ config.plugins.email.to }}" subject: "Contact by {{ form.value.name|e }}" body: "{% include 'forms/data.html.twig' %}"
它使用包含两个字段的电子邮件选项;from 字段指定电子邮件地址的发件人,to 字段通过使用电子邮件插件配置指定电子邮件地址的收件人。电子邮件字段还使用 subject 选项,其中电子邮件发送到输入的电子邮件,主题为 [联系人][输入的姓名],电子邮件正文在主题的 forms/data.html.twig 文件中定义。
重定向到其他页面
您可以使用 process 字段下定义的 message 和 display 选项重定向到另一个页面。
process: - message: Thank you for getting in touch! - display: thankyou
message 选项设置用户单击提交按钮时应显示的消息。当用户提交表单时,应将其重定向到另一个页面。在存储 form.md 文件的 thankyou 子文件夹下创建一个子页面。提交表单后,它将在页面上重定向并显示上述消息。
名为 thankyou/formdata.md 的子页面将包含以下内容。
--- title: Email sent cache_enable: false process: twig: true --- ## Your email has been sent!
当您提交表单时,插件将向用户发送电子邮件,数据保存在data/folder下。
保存
它用于将数据保存到保存在user/data文件夹下的文件中。
例如 −
process: - save: fileprefix: contact- dateformat: Ymd-His-u extension: txt body: "{% include 'forms/data.txt.twig' %}"
数据将以文本格式存储,扩展名为 txt。正文取自主题的 templates/forms/data.html.twig 文件。
以下屏幕显示了一个简单的表单 −