rias / craft-simple-forms
简单表单
Requires
- ext-json: *
- box/spout: ^2.7
- craftcms/cms: ^3.1.0
- tightenco/collect: ^5.7
README
Craft中的表单,易于使用
这是流行Craft 2 a&m impact forms插件的Craft 3版本。请勿使用此版本。
以下是原始README
控制面板功能
当用户有权限访问插件时,他们可以在控制面板中执行各种操作。有一个额外的设置允许用户控制插件的设置。
表单
您可以选择激活提交和/或通知。这意味着您可以忽略提交,但只收到表单提交时的通知。
默认情况下,通知被激活,所有信息都将自动填写。 发件人姓名 和 电子邮件地址 字段将自动包含Craft控制面板中电子邮件设置的详细信息。
插件将使用自己的模板来显示表单和电子邮件提交。您可以选择全局 或 每个表单覆盖这些模板!只需在模板文件夹中创建自己的文件夹(例如:_amforms)并创建一个您希望覆盖的模板。您可以在占位符中看到默认模板的名称,因此如果您创建了一个具有相同名称的模板,则可以选择将其用作所有表单的默认模板。当您使用不同的名称创建模板时,您可以创建每个表单的模板。
此选项卡仅供管理员使用。
字段
安装插件时,您会获得一些常用的默认字段。创建的字段存储在Craft字段的独立上下文/范围内。这意味着您可以在任何表单中重复使用这些字段,并且它们不会显示在Craft的字段列表中。
导出
您可以选择按表单导出提交。您可以选择要包含在导出中的字段(支持矩阵!)创建导出时,它将启动一个任务,将您的提交导出到存储文件夹中的文件。完成后,您可以下载文件或重新启动导出。
设置
默认情况下,表单已激活反垃圾邮件,但也可以选择激活Google reCAPTCHA。
自动清理
要自动删除旧提交,请启用 清理提交,配置阈值(例如-4 weeks
)并设置cron作业定期调用https://<yourDomain>/actions/simple-forms/submissions/clean-up
。示例/etc/crontab
条目(每天凌晨1:23 AM进行清理)
23 1 * * * root curl -s https://<yourDomain>/actions/simple-forms/submissions/clean-up &>> /var/log/simple-forms-cleanup.log
显示您的表单
简单标签
这只会显示基本字段!
{{ craft.amForms.displayForm('formHandle') }}
简单字段标签
{% set form = craft.amForms.getForm('formHandle') %}
{{ form.displayField('fieldHandle') }}
简单字段标签(使用命名空间)
{% set form = craft.amForms.getForm('formHandle') %}
<input type="hidden" name="namespace" value="{{ form.getNamespace() }}">
{{ form.displayField('fieldHandle') }}
自定义HTML
<form method="post" action="" accept-charset="UTF-8">
{{ getCsrfInput() }}
{# This should always be here! #}
<input type="hidden" name="action" value="amForms/submissions/saveSubmission">
{# Insert your form's handle. #}
<input type="hidden" name="handle" value="formHandle">
{# Optional: Redirect URL. Will redirect to current page by default. #}
<input type="hidden" name="redirect" value="contact?message=thankyou">
{# Optional: Anti-spam protection. #}
{{ craft.amForms.displayAntispam() }}
{# Optional: Google reCAPTCHA protection. #}
{{ craft.amForms.displayRecaptcha() }}
{# Place the HTML of your fields here #}
<input type="submit" value="Submit">
</form>
带有displayField的自定义HTML
{% set form = craft.amForms.getForm('formHandle') %}
<form method="post" action="" accept-charset="UTF-8">
{{ getCsrfInput() }}
{# This should always be here! #}
<input type="hidden" name="action" value="amForms/submissions/saveSubmission">
{# Insert your form's handle. #}
<input type="hidden" name="handle" value="{{ form.handle }}">
{# This will namespace your inputs (for IDs and such), but it's not required though #}
<input type="hidden" name="namespace" value="{{ form.getNamespace() }}">
{# Optional: Anti-spam protection. #}
{{ craft.amForms.displayAntispam() }}
{# Optional: Google reCAPTCHA protection. #}
{{ craft.amForms.displayRecaptcha() }}
{# Place the HTML of your fields here #}
{{ form.displayField('fieldHandle') }}
{{ form.displayField('aFieldHandle') }}
{{ form.displayField('anotherFieldHandle') }}
<input type="submit" value="Submit">
</form>
自定义字段HTML
将 formHandle 改为您的表单处理程序。
<div class="field">
<label for="frm_comment">Comment</label>
<input type="text" id="frm_comment" name="fields[comment]" value="{% if formHandle.comment is defined %}{{ formHandle.comment }}{% endif %}">
{% if formHandle is defined %}
{{ errorList(formHandle.getErrors('comment')) }}
{% endif %}
</div>
自定义矩阵字段
<div class="field">
{#
Notify Craft which Matrix block (handle) will be inserted.
Our field name for this example is: Persons
Our block name for this example is: Person
#}
<input type="hidden" name="fields[persons][new1][type]" value="person">
{# Block fields #}
<label for="frm_firstname">First name</label>
<input type="text" id="frm_firstname" name="fields[persons][new1][fields][firstName]">
<label for="frm_lastname">Last name</label>
<input type="text" id="frm_lastname" name="fields[persons][new1][fields][lastName]">
{% if formHandle is defined %}
{{ errorList(formHandle.getErrors('persons')) }}
{% endif %}
</div>
错误列表宏
{% macro errorList(errors) %}
{% if errors %}
<ul class="errors">
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
如果您想在模板本身中包含它,请使用
{% from _self import errorList %}
仪表盘小部件
在您的仪表板上显示最近的提交。