heimrichhannot/contao-formhybrid

包含处理contao前端表单提交的功能。

3.25.0 2024-05-23 09:29 UTC

This package is auto-updated.

Last update: 2024-09-12 11:28:01 UTC


README

包含处理contao前端表单提交的功能。

使用很简单:将默认调色板(FORMHYBRID_PALETTE_DEFAULT)包含在config.php中,并在您的模块的tl_module文件中删除您不需要的字段。

-> 点击此处查看模块formhybridformhybrid_listfrontendeditsubmissions之间的交互关系图。

功能

  • 表单验证
  • 根据特殊字段的dca属性(例如日期)转换其值
  • Ajax处理
  • 如有必要,使用提交模块存储提交内容
  • optIn实体激活和通知处理
  • optOut实体处理

使用方法

安装

使用composer和Contao 4管理版

composer require heimrichhannot/contao-formhybrid ~2.8

调色板处理

  • 必须在可编辑字段中声明permanentFields以获取正确的字段位置
  • 在可编辑字段中声明的字段,其选择器未激活或不是可编辑字段本身的一部分,将从最终字段集中删除
  • 不在可编辑字段中的活动选择器的字段将从最终字段中删除

插入标签

  • {{form::FIELDNAME}} 返回字段的格式化值(选择值而不是键)
  • {{form_value::FIELDNAME}} 返回字段的值
  • {{form_submission::FIELDNAME}} 返回 "字段标签 : 格式化字段值"
  • {{if}}
  • {{elseif}}
  • {{else}}
  • {{endif}}

开发者

通知中心令牌

Formhybrid已准备好通知中心。在表单提交时,可以向发送者发送2封电子邮件(确认通知)和一封给接收者(提交通知)。以下提供了以下令牌供使用

配置回调

额外的eval dca配置参数

前端表单

我们建议使用Contao Frontendedit。如果您不能或需要更高级的选项

  • 创建一个模块并添加您想要的所有调色板字段(参见config.php FORMHYBRID_PALETTE_DEFAULT和tl_module.php)
  • 将以下代码添加到您的模块::compile()方法中,以渲染表单
use HeimrichHannot\FormHybrid\Form;

[...]
    $objForm = new Form($this);
    $this->Template->form = $objForm->generate();
[...]

通过扩展Form类并重写方法可以创建更高级的配置。以下是可以重写的方法(非完整列表,请参阅Form和DC_Hybrid类)

钩子

JavaScript事件

optIn处理

FormHybrid自带optIn处理功能。使用它需要以下步骤

  • formHybridAddOptIn添加到您的模块调色板中
  • 在您的实体dca文件末尾添加\HeimrichHannot\FormHybrid\FormHybrid::addOptInFieldToTable([TABLE_NAME])并更新您的数据库
  • 在通知中心创建一个optIn通知,并在文本或HTML中提供##opt_in_link##

optOut处理

FormHybrid自带optOut处理功能。在调用optOut链接后,实体将被删除。使用它需要以下步骤

  • formHybridAddOptOut添加到您的模块调色板中,并在模块配置中激活它
  • 在您的实体dca文件末尾添加\HeimrichHannot\FormHybrid\FormHybrid::addOptOutFieldToTable([TABLE_NAME])并更新您的数据库
  • 在您的通知生成代码中调用数据库中的退订令牌 HeimrichHannot\FormHybrid\TokenGenerator,以生成退订电子邮件令牌和 URL。
  • opt_out_tokenopt_out_link 添加到您的通知中心令牌,并在消息中调用它们

注意:如果您增强现有数据以处理退订,则不会自动为现有条目生成令牌,并且无法为现有条目进行退订!在生成退订链接之前,您需要在代码中检查条目是否已存在令牌!示例

if ($module->formHybridAddOptOut && !$recipientsModel->optOutToken)
{
    $recipientsModel->optOutToken = Form::generateUniqueToken();
    $recipientsModel->save();
}

重复实体标志

Form::isDuplicateEntityError 设置为 true,以在保存之前停止并抛出错误消息。

自定义

添加自定义提交标签

将您的标签添加到 $GLOBALS['TL_LANG']['MSC']['formhybrid']['submitLabels']