raffaelj/cockpit-formvalidation

Cockpit CMS v1 的表单验证器和表单构建器

0.4.1 2022-12-16 15:30 UTC

This package is auto-updated.

Last update: 2024-09-16 19:36:08 UTC


README

此插件与 Cockpit CMS v2 不兼容。

另请参阅 Cockpit CMS v1 文档Cockpit CMS v1 存储库 以及 Cockpit CMS v2 文档Cockpit CMS v2 存储库

Cockpit CMS v1 的表单验证器和表单构建器。我主要将它与 CpMultiplane 结合使用,但它应该兼容纯 rest api 使用。

正在进行中!欢迎您通过代码、错误报告或功能请求进行贡献。

安装

将此存储库复制到 /addons 并命名为 FormValidation,或使用命令行界面。

通过 git

cd path/to/cockpit
git clone https://github.com/raffaelj/cockpit_FormValidation.git addons/FormValidation

通过 cp 命令行界面

cd path/to/cockpit
./cp install/addon --name FormValidation --url https://github.com/raffaelj/cockpit_FormValidation/archive/master.zip

通过 composer

请确保在项目的 composer.json 文件中定义了 cockpit 插件的路径。

{
    "name": "my/cockpit-project",
    "extra": {
        "installer-paths": {
            "addons/{$name}": ["type:cockpit-module"]
        }
    }
}
cd path/to/cockpit-root
composer create-project --ignore-platform-reqs aheinze/cockpit .
composer config extra.installer-paths.addons/{\$name} "type:cockpit-module"

composer require --ignore-platform-reqs raffaelj/cockpit-formvalidation

要求

  • Cockpit 版本 >= 0.12.2
  • 建议使用 PECL intl 扩展进行 punycode url 和邮件地址的转换

功能

表单构建器

字段类型

  • 布尔型(复选框)
  • 文本
  • 多行文本
  • 日期
  • 下拉列表
  • 多选下拉列表
  • 内容块(以 field.content 存储为富文本)
  • 诱饵(具有默认的隐藏输入字段属性)
  • 文件(默认情况下不工作 - 在 CpMultiplane 源代码中有一个高级使用示例,直到我更新此处的文档为止)

它适用于字符串,而且我(目前)不知道如果应该验证数组会发生什么。

在前端中,可以重用一些表单选项,如 "info"、"label"、"group"、"lst"、"width"。

...

表单验证器

  • 检查必填字段
  • 检查内容类型
  • 如果验证失败,则发送响应

想法是在每个字段上添加多个检查来欺骗垃圾邮件机器人,而不使用验证码。

一些模板化

  • 自定义邮件主题
  • 回复字段

请参阅下面的截图

如何使用

创建一个字段并单击 "验证" 选项卡。单击 "验证表单数据" 以激活验证器。

当验证器处于活动状态时,它会检查是否包含必填字段。如果您想允许发送在表单构建器中未出现的字段,您必须单击 "允许额外字段"。

要激活更多验证,请为每个字段单击 "验证" 并添加一些 json。

邮件字段

创建一个文本字段。

{
  "type": {
    "mail": true,
    "url": false
  }
}

诱饵

创建一个布尔字段并将其命名为 "confirm"。垃圾邮件机器人会喜欢它 :-D

{
  "honeypot": {
    "fieldname": "confirm",
    "expected_value": "0",
    "response": "Hello spambot. A human wouldn't fill this field."
  }
}

如果 "response": "404",则发送者会收到一个 404 路径未找到 而不是 json 响应。

...

默认值

  • 如果表单验证处于活动状态
    • 键名必须是字母数字(a-zA-Z0-9)或 '-' 或 '_'
    • 检查是否存在必填字段
    • 不允许发送具有未知字段名的数据
  • 如果字段验证处于活动状态
    • 没有默认值,只有指定的验证

注意

  • 将验证设置为 type:{"phone":false} 可能会导致错误阳性。正则表达式旨在允许输入类似 "0123 45678" 或 "+49 123-456-78",但 "123" 也会返回 true。

i18n

使用 Babel 插件

待办

  • 允许使用特殊字符的邮件地址(Punycode) - 它们是有效的,但 filter_var($to, FILTER_VALIDATE_EMAIL) 返回 false
    • --> 再次覆盖原始提交函数,或者
    • --> 修改 cockpit 核心的邮件验证 --> 现在已在核心中
  • 错误响应的国际化
  • 友好的错误响应 --> 使用国际化
  • 添加一个视图,通过 PHP 前端包含

匹配

  • 必需(!empty)
  • 蜜罐(人类不会填写此字段)
  • 类型(邮件、电话、URL)
  • !类型(反向类型)
  • equals (= 字符串)(用于简单的验证码或类似“你真的确定吗?请输入'是'”)
  • 包含
    • 代码
    • URL(s)
    • 字符串

类型

  • 邮件
  • 电话
  • URL
  • 数字
  • 布尔值
  • ASCII
  • 日期 --> 必须是国际化特定的
  • ...

表单邮件模板示例

config/forms/emails/formname.php 中创建一个自定义邮件模板,以使用 email_text_beforeemail_text_after 设置。

示例

屏幕截图

formbuilder

validation_01

honeypot

responses

致谢和第三方库

图标来自 Cockpit CMS v2,(c) Artur Heinze,https://agentejo.com,MIT 许可证