This bundle provides easy reCAPTCHA form field for Symfony.
Installation depends on how your project is setup:
If you're using the bin/vendors.php method to manage your vendor libraries,
add the following entry to the deps in the root of your project file:
[EWZTimeBundle]
git=http://github.com/excelwebzone/EWZRecaptchaBundle.git
target=/bundles/EWZ/Bundle/RecaptchaBundle
Next, update your vendors by running:
$ ./bin/vendorsGreat! Now skip down to Step 2.
If you're managing your vendor libraries with submodules, first create the
vendor/bundles/EWZ/Bundle directory:
$ mkdir -pv vendor/bundles/EWZ/BundleNext, add the necessary submodule:
$ git submodule add git://github.com/excelwebzone/EWZRecaptchaBundle.git vendor/bundles/EWZ/Bundle/RecaptchaBundleAdd the following entry to your autoloader:
<?php
// app/autoload.php
$loader->registerNamespaces(array(
// ...
'EWZ' => __DIR__.'/../vendor/bundles',
));Finally, enable the bundle in the kernel:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new EWZ\Bundle\RecaptchaBundle\EWZRecaptchaBundle(),
);
}Finally, add the following to your config file:
# app/config/config.yml
ewz_recaptcha:
public_key: here_is_your_public_key
private_key: here_is_your_private_key
secure: false
locale_key: kernel.default_localeNOTE: If you use secure url for reCAPTCHA put true in secure (false is the default value).
You can easily disable reCAPTCHA (for example in a local or test environment):
# app/config/config.yml
ewz_recaptcha:
// ...
enabled: falseCongratulations! You're ready!
When creating a new form class add the following line to create the field:
<?php
public function buildForm(FormBuilder $builder, array $options)
{
// ...
$builder->add('recaptcha', 'ewz_recaptcha');
// ...
}You can pass extra options to reCAPTCHA with the "attr > options" option:
<?php
public function buildForm(FormBuilder $builder, array $options)
{
// ...
$builder->add('recaptcha', 'ewz_recaptcha', array(
'attr' => array(
'options' => array(
'theme' => 'clean'
)
)
));
// ...
}To validate the field use:
<?php
use EWZ\Bundle\RecaptchaBundle\Validator\Constraints as Recaptcha;
/**
* @Recaptcha\True
*/
public $recaptcha;Cool, now you are ready to implement the form widget:
PHP:
<?php $view['form']->setTheme($form, array('EWZRecaptchaBundle:Form')) ?>
<?php echo $view['form']->widget($form['recaptcha'], array(
'attr' => array(
'options' => array(
'theme' => 'clean',
),
),
)) ?>Twig:
{% form_theme form 'EWZRecaptchaBundle:Form:ewz_recaptcha_widget.html.twig' %}
{{ form_widget(form.recaptcha, { 'attr': {
'options' : {
'theme' : 'clean',
},
} }) }}If you are not using a form, you can still implement the reCAPTCHA field using JavaScript:
PHP:
<div id="recaptcha-container"></div>
<script type="text/javascript">
$(document).ready(function() {
$.getScript("<?php echo \EWZ\Bundle\RecaptchaBundle\Form\Type\RecaptchaType::RECAPTCHA_API_JS_SERVER ?>", function() {
Recaptcha.create("<?php echo $form['recaptcha']->get('public_key') ?>", "recaptcha-container", {
theme: "clean",
});
});
};
</script>Twig:
<div id="recaptcha-container"></div>
<script type="text/javascript">
$(document).ready(function() {
$.getScript("{{ constant('\\EWZ\\Bundle\\RecaptchaBundle\\Form\\Type\\RecaptchaType::RECAPTCHA_API_JS_SERVER') }}", function() {
Recaptcha.create("{{ form.recaptcha.get('public_key') }}", "recaptcha-container", {
theme: "clean"
});
});
});
</script>