Downloads
Stars
Version
A reCAPTCHA Validator for Laravel 5.
This is a forked version of the reCaptcha package for same functionality but with support for reCaptcha Version 3.
(Looking for a Laravel 4 version? Pull the latest 1.x tag. For Laravel 5.0, pull the latest 2.0 tag.)
For reCaptcha v3 support use
dev-master
from this repository.
Add the following line to the require
section of composer.json
:
{
"require": {
"kuttumiah/recaptcha": "dev-master",
}
}
or run the command below in terminal
$ composer require "kuttumiah/recaptcha:dev-master"
If you are using Laravel 5.5+ and using package auto-discovery, you can skip this step. For older versions or if you have disabled package auto-discovery continue with this step.
In /config/app.php
, add the following to providers
:
Kuttumiah\Recaptcha\RecaptchaServiceProvider::class,
and the following to aliases
:
'Recaptcha' => Kuttumiah\Recaptcha\Facades\Recaptcha::class,
Run php artisan vendor:publish --provider="Kuttumiah\Recaptcha\RecaptchaServiceProvider"
.
In /config/recaptcha.php
, enter your reCAPTCHA public and private keys.
version
to 2 or 1.The package ships with a default validation message, but if you want to customize it, add the following line into resources/lang/[lang]/validation.php
:
'recaptcha' => 'The :attribute field is not correct.',
greggilbert/recaptcha
packageIn /config/app.php
, remove the following from providers
:
Greggilbert\Recaptcha\RecaptchaServiceProvider::class,
and the following from aliases
:
'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class,
Remove the following line from the require
section of composer.json
:
{
"require": {
"greggilbert/recaptcha": "dev-master",
}
}
Run the command below in terminal
$ composer update
Follow the Installation and Setup steps.
Note: If you face any issue error while migrating please check the Troubleshoot section.
{!! Recaptcha::render() !!}
to echo out the markup. $rules = [
// ...
'g-recaptcha-response' => 'required|recaptcha',
];
{!! Recaptcha::render() !!}
to echo out the markup. $rules = [
// ...
'recaptcha_response_field' => 'required|recaptcha',
];
It's also recommended to add required
when validating.
reCAPTCHA v2 allows for customization of the widget through a number of options, listed at the official documentation. You can configure the output of the captcha through six allowed keys: theme
, type
, lang
, callback
, tabindex
and expired-callback
.
In the config file, you can create an options
array to set the default behavior. For example:
// ...
'options' => [
'lang' => 'ja',
],
would default the language in all the reCAPTCHAs to Japanese. If you want to further customize, you can pass options through the render option:
echo Recaptcha::render([ 'lang' => 'fr' ]);
Options passed into Recaptcha::render
will always supercede the configuration.
To change the language of the captcha, simply pass in a language as part of the options:
'options' => [
'lang' => 'fr',
],
For a list of valid language codes, consulting the official documentation.
Alternatively, if you want to set a default template instead of the standard one, you can use the config:
// ...
'template' => 'customCaptcha',
or you can pass it in through the Form option:
echo Recaptcha::render([ 'template' => 'customCaptcha' ]);
While migrating from greggilbert/recaptcha
package you might end up raising an error like below
> @php artisan package:discover
In ProviderRepository.php line 208:
Class 'Greggilbert\Recaptcha\RecaptchaServiceProvider' not found
Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1
To resolve the issue I found a helpful resource on Stack Overflow which can fix this issue. Attaching the solution here for convenience.
Go to your project > bootstrap > cache > config.php
file. Remove the provider and aliases from the cached array manually.
Or simply remove the file and generate again by running the command below,
$ php artisan config:cache
For the v1 customization options, consult the old documentation and apply accordingly.
Because of Google's way of displaying the reCAPTCHA, this package won't work if you load your form from an AJAX call. If you need to do it, you should use one of the alternate methods provided by Google.