ed.sukharev/re-captcha-validator

Google reCaptcha 表单类型和验证器,适用于 Symfony 表单。

1.2.0 2019-05-20 23:12 UTC

This package is auto-updated.

Last update: 2024-09-21 20:48:54 UTC


README

License

这是一个非常轻量且简单的 reCAPTCHA 组件,适用于 Symfony Forms 组件(无需 Symfony 框架),它不是一个 Bundle,您可以重新配置所有组件,满足您的需求。

关于 Google reCAPTCHA API v2 的完整文档,您可以在这里找到:这里

安装

您可以使用 Composer 安装此包。运行以下命令:

composer require ed.sukharev/re-captcha-validator

使用示例

添加公钥和私钥,并将 reCAPTCHA 表单类型配置为服务。之后,您可以将 reCAPTCHA 类型添加到您的表单中

<?php

namespace AcmeBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class ContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('message', 'textarea')
            /** In type add your form alias **/
			->add('captcha', 'ds_re_captcha', array('mapped' => false))
			->add('send', 'submit');
    }

	public function setDefaultOptions(OptionsResolverInterface $resolver)
	{
		$resolver->setDefaults(array(
		    /** This option is require, because reCaptcha api.js add extra field "g-recaptcha-response" to form **/
			'allow_extra_fields' => true,
		));
	}
}

下一步,您需要将小部件渲染到您的视图中。以下是以 Twig 模板引擎为例,但其他引擎也应该是类似的。

您可以在表单中内联它

{% extends 'AcmeBundle::layout.html.twig' %}

{% form_theme form _self %}

{% block ds_re_captcha_widget %}
    {% spaceless %}
        <div class="g-recaptcha" data-sitekey="{{ public_key }}"></div>
        <script src="{{ js_api_url }}?hl={{ lang }}" async defer></script>
    {% endspaceless %}
{% endblock ds_re_captcha_widget %}

{% block content %}
    {{ form(your_form) }}
{% endblock %}

或者将其作为一个单独的文件发送(例如 ds_recaptcha_field.html.twig

{% block ds_re_captcha_widget %}
    {% spaceless %}
        <div class="g-recaptcha" data-sitekey="{{ public_key }}"></div>
        <script src="{{ js_api_url }}?hl={{ lang }}" async defer></script>
    {% endspaceless %}
{% endblock ds_re_captcha_widget %}

并在 twig 中包含它

{% extends 'AcmeBundle::layout.html.twig' %}

{% form_theme form 'ds_recaptcha_field.html.twig' %}

{% block content %}
    {{ form(your_form) }}
{% endblock %}

版权

版权(c)2019 Eduard Sukharev sukharev.eh@gmail.com。版权(c)2015 Ilya Pokamestov dario_swain@yahoo.com