cyber-duck / silverstripe-recaptcha
为 SilverStripe 提供标准 reCAPTCHA 和隐形 reCAPTCHA 表单字段
4.1
2022-10-04 21:29 UTC
Requires
- guzzlehttp/guzzle: ~6|~7
This package is auto-updated.
Last update: 2024-09-08 12:37:46 UTC
README
为 SilverStripe 提供标准 reCAPTCHA 和隐形 reCAPTCHA 表单字段
适用于 SilverStripe 4.*
安装
将以下内容添加到您的 composer.json 文件中,并运行 /dev/build?flush=all
{ "require": { "cyber-duck/silverstripe-recaptcha": "4.0.*" } }
标准 Recaptcha
添加 2 个 .env 变量,包含您的 recaptcha 密钥
RECAPTCHA_SITE_KEY="0000000000"
RECAPTCHA_SECRET_KEY="0000000000"
将字段添加到您的网站上的任何表单中,就像添加任何其他字段一样。传入
- 字段名称。同时将字段添加到必填字段列表中。
use CyberDuck\Recaptcha\Forms\RecaptchaField; $fields = FieldList::create([ RecaptchaField::create('Recaptcha'); ]); $validator = RequiredFields::create([ 'Recaptcha' ]);
隐形 Recaptcha
添加 2 个 .env 变量,包含您的 recaptcha 密钥
RECAPTCHA_INVISIBLE_SITE_KEY="0000000000"
RECAPTCHA_INVISIBLE_SECRET_KEY="0000000000"
将字段添加到您的网站上的任何表单中,就像添加任何其他字段一样。传入
- 字段名称,
- 表单 ID(不带 #)
- HTML 元素 ID(不带 #)或选择器(如按钮)以渲染 reCAPTCHA 小部件。同时将字段添加到必填字段列表中。
use CyberDuck\Recaptcha\Forms\InvisibleRecaptchaField; $fields = FieldList::create([ InvisibleRecaptchaField::create( 'Recaptcha', 'MemberLoginForm_LoginForm', 'MemberLoginForm_LoginForm_action_doLogin' ); ]); $validator = RequiredFields::create([ 'Recaptcha' ]);
与 jQuery 和 AJAX 一起工作
如果您想使用 AJAX 与 reCAPTCHA 一起使用,可以将模块模板文件夹中的 InvisibleRecaptcha.ss 复制到您的主题模板文件夹中
<script type="text/javascript"> var onRecaptchaFormSubmit = function(token) { document.getElementById('{$FormID}').submit(); }; var onloadCallback = function() { grecaptcha.render('{$Container}', { 'sitekey' : '{$SiteKey}', 'callback' : onRecaptchaFormSubmit }); }; </script>
然后只需更新 onRecaptchaFormSubmit 函数以使用 jQuery 选择并提交表单
<script type="text/javascript"> var onRecaptchaFormSubmit = function(token) { $('#{$FormID}').submit(); }; var onloadCallback = function() { grecaptcha.render('{$Container}', { 'sitekey' : '{$SiteKey}', 'callback' : onRecaptchaFormSubmit }); }; </script>
在您的 AJAX 成功函数中,如果您的表单验证失败,您可以通过调用 onloadCallback() 来重新渲染 reCAPTCHA
onloadCallback()