arnaud-ritti/mosparo-bundle

用于 mosparo 防垃圾邮件的 Symfony 扩展包

资助包维护!
Ko Fi

安装: 682

依赖者: 0

建议者: 0

安全性: 0

星标: 5

关注者: 3

分叉: 2

开放问题: 5

类型:symfony-bundle

1.2.2 2023-05-05 12:25 UTC

README

 

mosparo logo contains a bird with the name Mo and the mosparo text

Symfony 扩展包

此扩展包添加了在 Symfony 表单中使用 mosparo 所需的功能。

GitHub GitHub checks GitHub release (latest SemVer) Codacy Badge Codacy Badge

描述

使用此 PHP 库,您可以将连接到 mosparo 安装并验证提交的数据。

要求

要使用此插件,您必须满足以下要求

  • mosparo 项目
  • Symfony 5.4 或更高版本
  • PHP 8.0 或更高版本

安装

使用 composer 安装此扩展包

composer require arnaud-ritti/mosparo-bundle

配置

1. 注册扩展包

将扩展包注册到 config/bundles.php

return [
    //...
    Mosparo\MosparoBundle\MosparoBundle::class => ['all' => true],
];

2. 添加配置文件

将扩展包的配置设置为 config/packages/mosparo.yaml

mosparo:
  instance_url: '%env(MOSPARO_INSTANCE_URL)%'
  uuid: '%env(MOSPARO_UUID)%'
  public_key: '%env(MOSPARO_PUBLIC_KEY)%'
  private_key: '%env(MOSPARO_PRIVATE_KEY)%'

将您的变量添加到您的 .env 文件中

###> mosparo/mosparo-bundle ###
MOSPARO_INSTANCE_URL=https://example.com
MOSPARO_UUID=<your-project-uuid>
MOSPARO_PUBLIC_KEY=<your-project-public-key>
MOSPARO_PRIVATE_KEY=<your-project-private-key>
###< mosparo/mosparo-bundle ###

处理多个配置

在您的配置文件中。例如:config/packages/mosparo.yaml

mosparo:
  default_project: '%env(MOSPARO_DEFAULT)%'
  projects:
    forms:
      instance_url: '%env(MOSPARO_FORMS_INSTANCE_URL)%'
      uuid: '%env(MOSPARO_FORMS_UUID)%'
      public_key: '%env(MOSPARO_FORMS_PUBLIC_KEY)%'
      private_key: '%env(MOSPARO_FORMS_PRIVATE_KEY)%'
    login:
      instance_url: '%env(MOSPARO_LOGIN_INSTANCE_URL)%'
      uuid: '%env(MOSPARO_LOGIN_UUID)%'
      public_key: '%env(MOSPARO_LOGIN_PUBLIC_KEY)%'
      private_key: '%env(MOSPARO_LOGIN_PRIVATE_KEY)%'

在您的 .env 文件中

###> mosparo/mosparo-bundle ###
MOSPARO_DEFAULT=<your-default-config>

MOSPARO_FORMS_INSTANCE_URL=<your-forms-project-instance>
MOSPARO_FORMS_UUID=<your-forms-project-uuid>
MOSPARO_FORMS_PUBLIC_KEY=<your-forms-project-public-key>
MOSPARO_FORMS_PRIVATE_KEY=<your-forms-project-private-key>

MOSPARO_LOGIN_INSTANCE_URL=<your-login-project-instance>
MOSPARO_LOGIN_UUID=<your-login-project-uuid>
MOSPARO_LOGIN_PUBLIC_KEY=<your-login-project-public-key>
MOSPARO_LOGIN_PRIVATE_KEY=<your-login-project-private-key>
###< mosparo/mosparo-bundle ###

用法

如何在 Symfony 表单中集成 mosparo

<?php

use Mosparo\MosparoBundle\Form\Type\MosparoType;

class TaskType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('mosparo', MosparoType::class, [
            'project' => 'default',
            'allowBrowserValidation' => false,
            'cssResourceUrl' => '',
            'designMode' => false,
            'inputFieldSelector' => '[name]:not(.mosparo__ignored-field)',
            'loadCssResource' => true,
            'requestSubmitTokenOnInit' => true,
        ]);
    }
}

附加选项

忽略字段

自动忽略字段

mosparo 自动忽略以下字段

  • 所有没有名称(属性 name)的字段
  • HTML 字段类型
    • 密码
    • 文件
    • 隐藏
    • 复选框
    • 单选按钮
    • 提交
    • 重置
  • HTML 按钮类型
    • 提交
    • 按钮
  • 名称中包含 _mosparo_ 的字段

手动忽略字段

CSS 类

如果您给表单字段分配 CSS 类 mosparo__ignored-field,则该字段将不会被 mosparo 处理。

JavaScript 初始化

在初始化 JavaScript 功能时,您可以定义用于搜索字段的选择器(请参阅 mosparo 字段的参数)。

覆盖允许和可验证的字段类型

您还可以注册事件监听器(或订阅者)以添加或删除字段类型。

这里使用了一个示例监听器。

// src/EventListener/FilterFieldTypesListener.php
namespace App\EventListener;

use Mosparo\MosparoBundle\Event\FilterFieldTypesEvent;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;

#[AsEventListener]
class FilterFieldTypesListener
{
    public function __invoke(FilterFieldTypesEvent $event): FilterFieldTypesEvent
    {
        // Remove PasswordType from the ignored list
        $event->setIgnoredFieldTypes(array_diff(
          $event->getIgnoredFieldTypes(), 
          [
            PasswordType::class
          ]
        ));
        
        // Add PasswordType to the verifiable list
        $event->setVerifiableFieldTypes(array_merge(
          $event->getVerifiableFieldTypes(), 
          [
            PasswordType::class
          ]
        ));

        return $event;
    }
}

如何处理功能性和端到端测试

除非您为测试环境禁用 mosparo,否则 mosparo 不会允许您有效地测试您的应用程序。

# config/packages/mosparo.yaml
mosparo:
  enabled: '%env(bool:MOSPARO_ENABLED)%'
#.env.test or an environment variable
MOSPARO_ENABLED=0

如何禁用 SSL 验证

为了支持无效的 SSL 证书,您需要禁用 SSL 检查。

# config/packages/mosparo.yaml
mosparo:
  ...
  verify_ssl: '%env(bool:MOSPARO_VERIFY_SSL)%'
#.env or an environment variable
MOSPARO_VERIFY_SSL=0

对于多个配置

# config/packages/mosparo.yaml
mosparo:
  projects:
    forms:
      ...
      verify_ssl: '%env(bool:MOSPARO_FORMS_VERIFY_SSL)%'
    login:
      ...
      verify_ssl: '%env(bool:MOSPARO_LOGIN_VERIFY_SSL)%'
#.env or an environment variable
MOSPARO_FORMS_VERIFY_SSL=0
MOSPARO_LOGIN_VERIFY_SSL=0

许可证

mosparo 是开源软件,采用 MIT 许可协议 许可。请参阅 LICENSE 文件以获取完整的许可证。

贡献

请参阅 CONTRIBUTING