alexeevdv / yii2-recaptcha-widget
Google reCAPTCHA 小部件用于 Yii2
1.2.1
2019-11-24 18:26 UTC
Requires
- yiisoft/yii2: ^2.0
- yiisoft/yii2-httpclient: ^2.0
Requires (Dev)
- codeception/codeception: ~2.4.0
- yiisoft/yii2-coding-standards: ~2.0.3
README
Yii2 的 Google reCAPTCHA 包装器。
安装
安装此扩展的首选方法是使用 composer。
运行以下命令之一:
$ php composer.phar require alexeevdv/yii2-recaptcha-widget "^1.0"
或者在您的 composer.json
文件的 require
部分添加以下内容:
"alexeevdv/yii2-recaptcha-widget": "^1.0"
到 require
部分
配置
通过应用程序组件
'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', ]);
使用方法
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'));
测试中的使用
要关闭 recaptcha 检查,您需要在测试配置中添加以下内容
'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;