, (*1)
Yii2 wrapper for Google reCAPTCHA., (*2)
Installation
The preferred way to install this extension is through composer., (*3)
Either run, (*4)
$ php composer.phar require alexeevdv/yii2-recaptcha-widget "^1.0"
or add, (*5)
"alexeevdv/yii2-recaptcha-widget": "^1.0"
to the require
section of your composer.json
file., (*6)
Configuration
Through application component
'components' => [
//...
'recaptcha' => [
'class' => \alexeevdv\recaptcha\Recaptcha::class,
'siteKey' => 'YOUR_SITE_KEY',
'secret' => 'YOUR_SECRET',
],
//...
],
use alexeevdv\recaptcha\RecaptchaValidator;
use alexeevdv\recaptcha\RecaptchaWidget;
// Model validation rules
public function rules()
{
return [
//...
[
['recaptcha'],
RecaptchaValidator::class,
'secret' => 'YOUR_SECRET',
'minimalScore' => 0.6,
'onScoreReceived' => function ($score) {
// Do smth on actual user score. F.e. log it somewhere
},
],
//...
];
}
// Widget params
echo RecaptchaWidget::widget([
'siteKey' => 'YOUR_SITE_KEY',
]);
Usage
use alexeevdv\recaptcha\RecaptchaValidator;
use alexeevdv\recaptcha\RecaptchaWidget;
// Using ActiveForm
// In this case model validation rules will be applied
// You'll need to specify RecaptchaValidator for attribute
echo $form->field($model, 'recaptcha')->widget(RecaptchaWidget::class);
// As standalone field
echo RecaptchaWidget::widget(['name' => 'recaptcha']);
// In this case you need to check value manually
$validator = new RecaptchaValidator();
$isValid = $validator->validateValue(Yii::$app->request->get('recaptcha'));
Usage in tests
To turn off recaptcha checking you need to add this in your test config:, (*7)
'container' => [
'definitions' => [
\alexeevdv\recaptcha\RecaptchaValidator::class => ['skipOnEmpty' => true],
],
],
/**
* Optional. Color theme of the widget. "dark" or "light"
* @var string
*/
public $theme;
/**
* Optional. The type of CAPTCHA to serve. "image" or "audio"
* @var string
*/
public $type;
/**
* Optional. The size of the widget. "compact" or "normal"
* @var string
*/
public $size;
/**
* Optional. The tabindex of the widget and challenge.
* If other elements in your page use tabindex, it should be set to make user navigation easier.
* @var integer
*/
public $tabindex;
/**
* Optional. The name of your callback function, executed when the user submits a successful response.
* The g-recaptcha-response token is passed to your callback.
* @var string|JsExpression
*/
public $callback;
/**
* Optional. The name of your callback function, executed when the reCAPTCHA response expires
* and the user needs to re-verify.
* @var string|JsExpression
*/
public $expiredCallback;
/**
* Optional. The name of your callback function, executed when reCAPTCHA encounters an error
* (usually network connectivity) and cannot continue until connectivity is restored. If you specify
* a function here, you are responsible for informing the user that they should retry.
* @var string|JsExpression
*/
public $errorCallback;
/**
* Optional. Forces the widget to render in a specific language
* If not set then language is auto detected from application language
* If set to false then language is autodetected on client side
*/
public $language;