Symfony2 EWZRecaptchaBundle永远不会验证recaptcha字段

时间:2015-07-08 10:49:46

标签: validation symfony bundle recaptcha

我正在使用Symfony 2.7,我正在尝试在我的注册表单中使用EWZRecaptchaBundle(dev-master)。我已按照documentation的步骤进行操作,但它不起作用,从不验证重新接收字段。

我已经配置了这个包:

ewz_recaptcha:
    public_key:  my_public_key
    private_key: my_private_key
    locale_key:  %kernel.default_locale%

我在课堂上添加了recaptcha注册:

// ...
use EWZ\Bundle\RecaptchaBundle\Validator\Constraints as Recaptcha;

class Register
{
    // ...

    /**
     * @Recaptcha\IsTrue
     */
    public $recaptcha;

    // ...
}

和我的RegisterType:

// ...
class RegisterType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // ...  
        ->add('recaptcha', 'ewz_recaptcha');
    }

    public function getName()
    {
        return 'register';
    }
}

并在我的表单模板中:

{# ... #}
{{ form_widget(form.recaptcha) }}
{# ... #}

但是当我提交表单时,永远不要验证recaptcha字段,也不要显示错误消息“此值不是有效的验证码”。虽然我不检查它。是否有必要在控制器中执行提交表单的内容?

感谢。

2 个答案:

答案 0 :(得分:0)

找到解决方案。关键是不要使用AJAX。设置config.yml和RegisterType如下:

在app / config.yml中,您应该设置以下内容:

ewz_recaptcha:
public_key: public_key_here
private_key: private_key_here
locale_key: '%kernel.default_locale%'
enabled: true
ajax: false

在RegisterType中你应该有:

 ->add('recaptcha', EWZRecaptchaType::class,
            [
                'label'       => 'Captcha check:',
                'mapped'      => false,
                'constraints' => [
                    new Recaptcha()
                ],
                'attr'        => [
                    'options' => [
                        'type'  => 'image',
                        'defer' => false,
                        'async' => false,
                        'size'  => 2
                    ]
                ]
            ])

答案 1 :(得分:-1)

我建议使用gregwar验证码捆绑包,它是一个功能强大的捆绑包,易于使用 https://github.com/Gregwar/CaptchaBundle