carlos-mg89 / symfony-captcha-bundle
Symfony Captcha Bundle -- BotDetect PHP CAPTCHA generator integration for the Symfony framework.
Installs: 16 948
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 17
Type:symfony-bundle
Requires
- php: >=5.3.9
- captcha-com/captcha: 4.*
This package is auto-updated.
Last update: 2024-10-09 01:03:22 UTC
README
BotDetect PHP Captcha generator integration for the Symfony 5 framework (possibly on Symfony 4.4 too)
BotDetect Symfony CAPTCHA integration on captcha.com
- Symfony Captcha Integration Quickstart
- Symfony Application
- Symfony Captcha Api Basics Example
- Symfony Captcha Form Model Validation Example
- Symfony Captcha FOSUserBundle Example
Other BotDetect PHP Captcha integrations
- Plain PHP Captcha Integration
- WordPress Captcha Plugin
- CakePHP Captcha Integration
- CodeIgniter Captcha Integration
- Laravel Captcha Integration
Questions?
If you encounter bugs, implementation issues, a usage scenario you would like to discuss, or you have any questions, please contact BotDetect CAPTCHA Support.
How to install with Composer
Simply run composer require carlos-mg89/symfony-captcha-bundle
Usage example in a Symfony 5.x project
- Install dependency with Composer as explained above
- Add the following in your
config/routes.yaml
:captcha_routing: resource: "@CaptchaBundle/Resources/config/routing.yml"
- Create this file
config/packages/captcha.php
with the following content (or similar):<?php if (!class_exists('CaptchaConfiguration')) { return; } // You could have more than one object like ExampleCaptcha. For example, one for the login page, another for the register page, etc. return [ 'ExampleCaptcha' => [ 'UserInputID' => 'captchaCode', 'CodeLength' => CaptchaRandomization::GetRandomCodeLength(5, 6), 'ImageWidth' => 250, 'ImageHeight' => 50, ], ];
- Edit your
config/services.yaml
so it autowires the controllers used in the library:# We need to autowire the Container (or manually wire it) services: Captcha\Bundle\CaptchaBundle\Controller\: resource: '../vendor/carlos-mg89/symfony-captcha-bundle/Controller' autowire: true
- Edit your
FormType
or yourFormBuilderInterface
with this bit that adds the captcha along with the constraing to validate the form:$builder->add('captchaCode', CaptchaType::class, [ 'captchaConfig' => 'ExampleCaptcha', 'constraints' => [ new ValidCaptcha([ 'message' => 'Invalid captcha, please try again', ]), ] ]);
- Now edit your Twig template with the new
captchaCode
(CaptchaType
):{{ form_label(form.captchaCode) }} {{ form_widget(form.captchaCode}) }}
- Finally, add the Form validation:
$contactForm = $this->createForm(ContactType::class); $contactForm->handleRequest($request); if ($contactForm->isSubmitted() && $contactForm->isValid()) { // Do whatever you want, be it register a user, send an email, etc $this->addFlash('success', $translator->trans('Contact.Form.SuccessMsg')); } elseif ($contactForm->isSubmitted() && !$contactForm->isValid()) { throw new Exception('Invalid form'); }
You have the original documentation here: https://captcha.com/doc/php/howto/symfony-captcha-bundle-integration.html#howto_display_captcha_config but it's not fully up to date nor complete.