EWZRecaptchaBundle
This bundle provides easy reCAPTCHA form field for Symfony., (*1)
A bridge for the Silex framework has been implemented too : Jump to documentation., (*2)
Installation
Step 1: Use composer and enable Bundle
To install EWZRecaptchaBundle with Composer just type in your terminal:, (*3)
php composer.phar require excelwebzone/recaptcha-bundle
Now, Composer will automatically download all required files, and install them
for you. All that is left to do is to update your AppKernel.php
file, and
register the new bundle:, (*4)
add('recaptcha', EWZRecaptchaType::class);
// ...
}
```
You can pass extra options to reCAPTCHA with the "attr > options" option:
``` php
add('recaptcha', EWZRecaptchaType::class, array(
'attr' => array(
'options' => array(
'theme' => 'light',
'type' => 'image',
'size' => 'normal',
'defer' => true,
'async' => true
)
)
));
// ...
}
```
If you need to configure the language of the captcha depending on your site
language (multisite languages) you can pass the language with the "language"
option:
``` php
add('recaptcha', EWZRecaptchaType::class, array(
'language' => 'en'
// ...
));
// ...
}
```
To validate the field use:
``` php
false``` then the annotation will not work. You have to also set ```constraints```:
``` php
add('recaptcha', EWZRecaptchaType::class, array(
'attr' => array(
'options' => array(
'theme' => 'light',
'type' => 'image',
'size' => 'normal'
)
),
'mapped' => false,
'constraints' => array(
new RecaptchaTrue()
)
));
// ...
```
The form template resource is now auto registered via an extension of the container.
However, you can always implement your own custom form widget.
**PHP**:
``` php
setTheme($form, array('EWZRecaptchaBundle:Form')) ?>
widget($form['recaptcha'], array(
'attr' => array(
'options' => array(
'theme' => 'light',
'type' => 'image',
'size' => 'normal'
),
),
)) ?>
Twig:, (*5)
``` jinja
{% form_theme form 'EWZRecaptchaBundle:Form:ewz_recaptcha_widget.html.twig' %}, (*6)
{{ form_widget(form.recaptcha, { 'attr': {
'options' : {
'theme': 'light',
'type': 'image',
'size': 'normal'
},
} }) }}, (*7)
If you are not using a form, you can still implement the reCAPTCHA field
using JavaScript:
**PHP**:
``` php
<div id="recaptcha-container"></div>
<script type="text/javascript">
$(document).ready(function() {
$.getScript("<?php echo \EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType::RECAPTCHA_API_JS_SERVER ?>", function() {
Recaptcha.create("<?php echo $form['recaptcha']->get('public_key') ?>", "recaptcha-container", {
theme: "clean",
});
});
};
</script>
Twig:, (*8)
``` jinja
, (*9)
## Customization
If you want to use a custom theme, put your chunk of code before setting the theme:
``` jinja
{% form_theme form 'EWZRecaptchaBundle:Form:ewz_recaptcha_widget.html.twig' %}
{{ form_widget(form.recaptcha, { 'attr': {
'options' : {
'theme' : 'custom',
},
} }) }}