pixelopen/cloudflare-turnstile-bundle

一个简单的包,帮助在 Symfony 中集成 Cloudflare Turnstile。

0.4.0 2024-05-31 09:37 UTC

This package is auto-updated.

Last update: 2024-08-31 00:37:09 UTC


README

Minimum PHP Version Minimum Symfony Version GitHub release Quality Gate Status

本包提供了设置和验证 Cloudflare Turnstile CAPTCHA 响应的辅助工具。

Cloudflare Turnstile for Symfony Form

安装

您可以通过 Composer 安装此包

composer require pixelopen/cloudflare-turnstile-bundle

将包添加到 config/bundles.php 文件中

PixelOpen\CloudflareTurnstileBundle\PixelOpenCloudflareTurnstileBundle::class => ['all' => true]

在 config/packages/pixel_open_cloudflare_turnstile.yaml 中添加一个配置文件

pixel_open_cloudflare_turnstile:
  key: '%env(TURNSTILE_KEY)%'
  secret: '%env(TURNSTILE_SECRET)%'
  enable : true

访问 Cloudflare 创建您的站点密钥和密钥,并将它们添加到您的 .env 文件中。

TURNSTILE_KEY="1x00000000000000000000AA"
TURNSTILE_SECRET="2x0000000000000000000000000000000AA"

与您的 Symfony 表单一起使用

创建一个表单类型,并插入一个 Turnstile 类型来添加 Cloudflare Turnstile

<?php

namespace App\Form;

use App\Entity\Contact;
use PixelOpen\CloudflareTurnstileBundle\Type\TurnstileType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('name', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'name']])
            ->add('message', TextareaType::class, ['label' => false, 'attr' => ['placeholder' => 'message']])
            ->add('security', TurnstileType::class, ['attr' => ['data-action' => 'contact', 'data-theme' => 'dark'], 'label' => false])
            ->add('submit', SubmitType::class)
        ;
    }

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => Contact::class,
        ]);
    }
}

测试

以下为测试目的使用的站点密钥和密钥

站点密钥

密钥

待办事项

  • 添加 phpunit 来测试字段 和验证器

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。