Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Symfony Captcha Bundle Laravel Package

carlos-mg89/symfony-captcha-bundle

View on GitHub
Deep Wiki
Context7

ATTENTION!!! This library is not the official one, but since the official one does not seem to have support anymore I've decided to fully update it so it's working again for newer Symfony versions. I haven't put any efforts on making it compatible with Symfony 4 or older versions, but contributions are welcome.

BotDetect PHP Captcha generator integration for the Symfony 5 framework (possibly on Symfony 4.4 too)

Total Downloads Latest Stable Version

BotDetect PHP CAPTCHA Library

BotDetect Symfony CAPTCHA integration on captcha.com

Other BotDetect PHP Captcha integrations

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

  1. Install dependency with Composer as explained above
  2. Add the following in your config/routes.yaml:
    captcha_routing:
          resource: "@CaptchaBundle/Resources/config/routing.yml"
    
  3. 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,
       ],
     ];
    
  4. 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
    
  5. Edit your FormType or your FormBuilderInterface 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',
            ]),
        ]
    ]);
    
  6. Now edit your Twig template with the new captchaCode (CaptchaType):
    {{ form_label(form.captchaCode) }}
    {{ form_widget(form.captchaCode}) }}
    
  7. 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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
comsave/common
alecsammon/php-raml-parser
chrome-php/wrench
lendable/composer-license-checker
typhoon/reflection
mesilov/moneyphp-percentage
mike42/gfx-php
bookdown/themes
aura/view
aura/html
aura/cli
povils/phpmnd
nayjest/manipulator
omnipay/tests
psr-mock/http-message-implementation
psr-mock/http-factory-implementation
psr-mock/http-client-implementation
voku/email-check
voku/urlify
rtheunissen/guzzle-log-middleware