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/子文件夹下创建一个子页面,当用户提交表单时将重定向到该页面。

您可以使用表单插件中的一些字段,如下表所示:

序号 字段和描述
1

验证码

它是一个反垃圾邮件字段,用于计算以确定用户是否为人类。

2

复选框

它显示一个简单的复选框。

3

复选框

它显示多个复选框。

4

日期和日期时间

这两个字段分别用于显示日期和日期以及时间。

5

电子邮件

它是一个带有验证的电子邮件字段。

6

隐藏

它指定隐藏字段。

7

密码

它指定密码字段。

8

单选按钮

它显示简单的单选按钮。

9

选择

它提供选择字段。

10

间隔符

它允许向表单添加标题、文本或水平线。

11

文本

它显示简单的文本字段。

12

文本区域

它显示简单的文本区域字段。

13

显示

它显示文本或说明字段,而不是输入字段。

字段参数

每个字段都接受以下参数,这些参数可用于自定义表单中的外观。

序号 参数和描述
1

标签

它定义标签字段。

2

validate.required

它使元素成为必填项。

3

validate.pattern

它指定验证模式。

4

validate.message

验证失败时显示消息。

5

类型

它定义字段类型。

6

默认

它定义默认字段类型。

7

大小

它显示字段大小,例如大、特小、中、长、小。

8

姓名

它定义字段名称。

9

它使用带有 css 类的字符串。

10

ID

它定义字段 ID。

11

样式

它指定字段的样式。

12

标题

它定义字段的标题。

13

禁用

它确定字段是否处于禁用状态。

14

占位符

它是一个简短的提示,在用户输入值之前显示在输入字段中。

15

自动聚焦

它指定页面加载时输入元素应自动获得焦点。

16

novalidate

它指定提交表单数据时不应进行验证。

17

只读

它将字段确定为只读状态。

18

自动完成

当用户开始在字段中键入时,它会显示字段中的选项,并根据之前键入的值显示值。

一些字段包含特定参数,例如:

序号 参数和描述
1

日期和日期时间

这些字段使用validate.minvalidate.max来设置最小值和最大值。

2

间隔符

它使用underline添加<hr>标签,使用text添加文本值,并使用title作为<h3>标签。

3

选择

它使用multiple参数添加多个值。

4

选择和复选框

它使用options字段设置可用的选项。

5

显示

它使用content参数显示内容。它将markdown设置为 true 以显示内容。

6

验证码

它使用recatpcha_site_keyrecaptcha_not_validated参数。

关于验证码的说明

我们在名为g-recaptcha-response的字段下有关于验证码的信息代码,如下所示:

- 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选项,其中电子邮件发送到输入的电子邮件,主题为[Contact by][name entered],电子邮件正文在主题的forms/data.html.twig文件中定义。

重定向到其他页面

您可以使用process字段下定义的messagedisplay选项重定向到另一个页面。

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文件。

以下屏幕显示了一个简单的表单:

Grav Forms
广告