zemasterkrom / zmkr-cloudflare-turnstile-bundle
Cloudflare Turnstile 与 Symfony 的可扩展和可配置集成
Requires
- php: >=7.4
- symfony/asset: ^5.0|^6.0|^7.0
- symfony/form: ^5.0|^6.0|^7.0
- symfony/framework-bundle: ^5.0|^6.0|^7.0
- symfony/http-client: ^5.0|^6.0|^7.0
- symfony/translation: ^5.0|^6.0|^7.0
- symfony/twig-bundle: ^5.0|^6.0|^7.0
- symfony/validator: ^5.0|^6.0|^7.0
Requires (Dev)
- dbrekelmans/bdi: ^1.0
- phpstan/phpstan-symfony: ^1.0
- symfony/panther: ^0.8|^1.0|^2.0
- symfony/phpunit-bridge: ^5.0|^6.0|^7.0
README
需要 Symfony >= 5.0
和 PHP >= 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 许可证的许可。许可证可在此处找到。