carlos-mg89/symfony-captcha-bundle

If you encounter bugs, implementation issues, a usage scenario you would like to discuss, or you have any questions, please contact BotDetect CAPTCHA Support.
Simply run composer require carlos-mg89/symfony-captcha-bundle
config/routes.yaml:
captcha_routing:
resource: "@CaptchaBundle/Resources/config/routing.yml"
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,
],
];
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
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',
]),
]
]);
captchaCode (CaptchaType):
{{ form_label(form.captchaCode) }}
{{ form_widget(form.captchaCode}) }}
$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.
How can I help you explore Laravel packages today?