zemasterkrom/zmkr-cloudflare-turnstile-bundle

Cloudflare Turnstile 与 Symfony 的可扩展和可配置集成

v1.0.1 2024-08-15 20:15 UTC

This package is auto-updated.

Last update: 2024-09-15 20:52:19 UTC


README

CI Status codecov

需要 Symfony >= 5.0PHP >= 7.4。已测试至 Symfony 7

本包的目的是简化将 Cloudflare Turnstile 验证码系统集成到 Symfony 表单中的配置和集成过程。

提供功能概述

  • 自动验证码渲染、语言配置和验证
  • 超时管理
  • 客户端错误域管理
  • reCAPTCHA / hCaptcha 兼容模式
  • 使用自定义 JavaScript 渲染逻辑的可能性
  • 将验证码标记为必填项的可能性

开始使用

使用 Symfony Flex

使用 Composer 运行以下命令

composer require zemasterkrom/zmkr-cloudflare-turnstile-bundle

如果您在您的 composer.json 文件中没有明确允许 "contrib" 脚本,将为 zemasterkrom/zmkr-cloudflare-turnstile-bundle 提示以下消息

您想执行此脚本吗?

对于 zemasterkrom/zmkr-cloudflare-turnstile-bundle,请回答

最后,修改 .env 文件的 zemasterkrom/zmkr-cloudflare-turnstile-bundle 部分,添加您的 Cloudflare Turnstile 应用程序密钥

###> zemasterkrom/zmkr-cloudflare-turnstile-bundle ###
CLOUDFLARE_TURNSTILE_SITEKEY=<sitekey>
CLOUDFLARE_TURNSTILE_SECRET_KEY=<secret_key>
###< zemasterkrom/zmkr-cloudflare-turnstile-bundle ###

不使用 Symfony Flex

安装 Composer 依赖项

composer require zemasterkrom/zmkr-cloudflare-turnstile-bundle

config/bundles.php 文件中注册此包

return [
    //...
    Zemasterkrom\CloudflareTurnstileBundle\ZmkrCloudflareTurnstileBundle::class => ['all' => true],
];

创建 config/packages/zmkr_cloudflare_turnstile.yaml 配置文件

zmkr_cloudflare_turnstile:
    captcha:
        sitekey: "%env(CLOUDFLARE_TURNSTILE_SITEKEY)%"
        secret_key: "%env(CLOUDFLARE_TURNSTILE_SECRET_KEY)%"

将您的 Cloudflare Turnstile 应用程序密钥添加到 .env 文件中

CLOUDFLARE_TURNSTILE_SITEKEY=<sitekey>
CLOUDFLARE_TURNSTILE_SECRET_KEY=<secret_key>

使用方法

要将 Cloudflare Turnstile 验证码添加到表单,您需要在表单构建器中关联一个 CloudflareTurnstileType 字段

<?php

namespace App\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Zemasterkrom\CloudflareTurnstileBundle\Form\Type\CloudflareTurnstileType;

class ContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('first_name', TextType::class, [
                'label' => 'First name'
            ])
            ->add('last_name', TextType::class, [
                'label' => 'Last name'
            ])
            ->add('cf_turnstile_response', CloudflareTurnstileType::class);
    }
}

当您检查与 CloudflareTurnstileType 关联的表单时,将自动执行验证

<?php

namespace App\Controller;

use App\Form\Type\ContactType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class CloudflareTurnstileTestController extends AbstractController
{
    public function validateContactForm(Request $request): Response
    {
        $form = $this->createForm(ContactType::class);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            // The form has been submitted and is valid: execute your actions here
        }

        // The form has not been submitted or is invalid: if there is an error, an error message will be registered in your form
        return $this->render('<twig_template_path>', [
            'form' => $form->createView(),
        ]);
    }
}

文档

对于高级用法,请参阅文档

许可证

此包受 MIT 许可证的许可。许可证可在此处找到。