我正在使用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字段,也不要显示错误消息“此值不是有效的验证码”。虽然我不检查它。是否有必要在控制器中执行提交表单的内容?
感谢。
答案 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