dario_swain/re-captcha-validator

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

1.0.5 2016-03-10 19:06 UTC

This package is not auto-updated.

Last update: 2024-09-24 04:15:35 UTC


README

SensioLabsInsight Latest Stable Version Build Status Scrutinizer Code Quality Coverage Status License

这是一个非常轻量级且简单的 reCAPTCHA 组件,适用于 Symfony 框架,它不是 Bundle,你可以根据喜好重新配置所有组件。

您可以在这里找到有关 Google reCAPTCHA API v2 的完整文档。

安装

您可以使用 Composer 安装此包。将以下行添加到您的 composer.json 文件中

{
    "require": {
        "dario_swain/re-captcha-validator": "dev-master"
    },
    "scripts": {
        "post-install-cmd": [
            "DS\\Component\\ReCaptchaValidator\\Composer\\ScriptHandler::replaceViews"
        ],
        "post-update-cmd": [
            "DS\\Component\\ReCaptchaValidator\\Composer\\ScriptHandler::replaceViews"
        ]
    },
}

要使用 php 版本 ~ 5.3,请使用版本 ~ 1.0

使用示例

添加公共和私有密钥,并将 reCAPTCHA 表单类型配置为服务,在应用程序包服务配置(service.yml)中提供以下配置

parameters:
    ds_recaptcha_public_key:  #YOUR_PUBLIC_KEY#
    ds_recaptcha_private_key: #YOUR_PRIVATE_KEY#

services:
    ds.form.type.recaptcha:
            class: DS\Component\ReCaptchaValidator\Form\ReCaptchaType
            arguments: ['@request_stack', %ds_recaptcha_public_key%, %ds_recaptcha_private_key%, %locale%]
            tags:
                - { name: form.type, alias: ds_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_recaptcha', 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,
		));
	}
}

下一步,您需要将表单主题添加到表单视图中,看起来像这样

{% extends 'AcmeBundle::layout.html.twig' %}
{% form_theme form 'DS/ReCaptcha/views/form_div_layout.html.twig' %}
{% block content %}
    {{ form_start(form) }}
    {{ form_widget(form) }}
    {{ form_end(form) }}
{% endblock %}

如果您需要自定义小部件,请随意更改 %kernel_root%/Resources/DS/ReCaptcha/views/form_div_layout.twig 中的模板

版权

版权所有(c)2015 Ilya Pokamestov dario_swain@yahoo.com