arnaud-ritti / mosparo-bundle
用于 mosparo 防垃圾邮件的 Symfony 扩展包
1.2.2
2023-05-05 12:25 UTC
Requires
- php: >=8.0.2
- ext-json: *
- mosparo/php-api-client: ^1.0.2
- ramsey/uuid: ^4.0
- symfony/config: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/event-dispatcher: ^5.4 || ^6.0
- symfony/form: ^5.4 || ^6.0
- symfony/framework-bundle: ^5.4 || ^6.0
- symfony/http-kernel: ^5.4 || ^6.0
- symfony/serializer: ^5.4 || ^6.0
- symfony/twig-bundle: ^5.4 || ^6.0
- symfony/validator: ^5.4 || ^6.0
- symfony/yaml: ^5.4 || ^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.9
- phpstan/phpstan-phpunit: ^1.2
- phpstan/phpstan-strict-rules: ^1.4
- phpstan/phpstan-symfony: ^1.2
- squizlabs/php_codesniffer: ^3.0
- symfony/console: ^5.4 || ^6.0
- symfony/phpunit-bridge: ^5.4 || ^6.0
This package is auto-updated.
Last update: 2024-09-15 00:52:11 UTC
README
Symfony 扩展包
此扩展包添加了在 Symfony 表单中使用 mosparo 所需的功能。
描述
使用此 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