Symfony Bundle - AndanteProject
A Symfony Bundle to easily integrate Google reCAPTCHA into Symfony Form.
Symfony 4.x-6.x and PHP 7.4-8.x.
Via Composer:
$ composer require andanteproject/recaptcha-bundle
- Add Google reCAPTCHA to your Symfony Form just like you do with every other
FormType
; - Works like magic ✨.
After install, make sure you have the bundle registered in your symfony bundles list (config/bundles.php
):
return [
/// bundles...
Andante\ReCaptchaBundle\AndanteReCaptchaBundle::class => ['all' => true],
/// bundles...
];
This should have been done automagically if you are using Symfony Flex. Otherwise, just register it by yourself.
Create a new andante_re_captcha.yaml
configuration file and sets Google ReCAPTCHA v2 secret
and site_key
.
andante_re_captcha:
secret: 'put_here_your_google_recaptcha_v2_secret'
site_key: 'put_here_your_google_recaptcha_v2_site_key'
Please note: If you don't want to be annoyed by recaptcha in your development/test environment, just use secret key
and site key
you can find in this Google ReCAPTCHA documentation page.
Furthermore, you can create a test
configuration to disable Andante\ReCaptchaBundle\Validator\Constraint\ReCaptchaValidator
in test
environment:
andante_re_captcha:
enable_validation: false #default: true
After this, you can add Andante\ReCaptchaBundle\Form\ReCaptchaType
Form type in your forms like you always do with other types.
<?php
use Andante\ReCaptchaBundle\Form\ReCaptchaType;
use Symfony\Component\Form\AbstractType;
class RegistrationFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
// ...
// All your form fields
// ...
->add('recaptcha', ReCaptchaType::class);
}
}
Done! 🎉
You also have 2 options to change ReCAPTCHA theme or size.
$builder->add('recaptcha', ReCaptchaType::class, [
'theme' => 'dark', // default is "light"
'size' => 'compact' // default is "normal"
]);
Using the option 'theme'
=> 'dark'
is especially useful if your app has a dark mode.
Validation is handled by Andante\ReCaptchaBundle\Validator\Constraint\ReCaptchaValidator
, which is a default constraint inside ReCaptchaType
options.
If you want to replace it with your own or disable it for whatever reason, just empty/replace form type constraints
option.
$builder->add('recaptcha', ReCaptchaType::class, [
'constraints' => [
// Default value is Constraints\NotBlank + Constraint\Recaptcha
]
]);
Built with love ❤️ by AndanteProject team.