maxpowel/wixet-recaptcha-bundle

This Bundle provides support for google recaptcha into symfony forms

v1.1 2017-02-21 19:17 UTC

This package is not auto-updated.

Last update: 2024-11-09 21:06:50 UTC


README

Build Status Coverage Status License

Add google captcha validation to symfony forms easily

Installation

Step 1: Use composer and enable Bundle

To install WixetRecaptchaBundle with Composer just type in your terminal:

composer require maxpowel/wixet-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:

<?php

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Wixet\RecaptchaBundle\WixetRecaptchaBundle(),
    // ...
);

Step2: Configure the bundle's

Add the following to your config file:

wixet_recaptcha:
     site_key: "YourSiteKey"
     secret: "YourSecret"

Get your recaptcha keys at https://www.google.com/recaptcha/admin

Basic Usage

In your controller or wherever is your form, add the WixetRecaptchaType like the following example:

$form = $this->createFormBuilder()
            ->add("name", TextType::class)
            ->add("recaptcha", WixetRecaptchaType::class)
            ->add("Submit", SubmitType::class)
            ->getForm()
        ;

Don't forget to include the type

use Wixet\RecaptchaBundle\Form\Type\WixetRecaptchaType;

Multiple and delayed rendering

Sometimes you need multiple recaptchas or delayed render (not render onload but render when you want). This is useful for example when you load ajax content with recaptchas.

The first step is include the recaptcha script manually (where you load all your scripts), you have to options:

{{ include_recaptcha() | raw }}

or

{{ include('WixetRecaptchaBundle::recaptcha_explicit.html.twig', { 'site_key': recaptcha_site_key() }) }}

I prefer the first way but the second allows more customization.

Now render the form as usual but with the option "explicit_render=true"

$form = $this->createFormBuilder()
            ->add("name", TextType::class)
            ->add("recaptcha", WixetRecaptchaType::class, array(
                'explicit_render' => true
            ))
            ->add("Submit", SubmitType::class)
            ->getForm()
        ;

That's all!