我想在Sylius登录表格中添加ReCaptcha,我已经安装了以下软件 stefandoornsylius-recaptcha-plugin。 并按照所有的安装说明进行了安装,但它没有验证,即使验证码字段为空,表单也会被记录下来,没有抛出任何错误.我目前使用的是Sylius v1.7。
视图工作良好,看起来是这样的。用验证码登录我已经扩展了SecurityLoginType并创建了一个扩展。
<?php
declare(strict_types=1);
namespace App\Form\Extension;
use EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType;
use EWZ\Bundle\RecaptchaBundle\Validator\Constraints\IsTrue as RecaptchaTrue;
use Sylius\Bundle\UiBundle\Form\Type\SecurityLoginType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
class SecurityLoginTypeExtension extends AbstractTypeExtension
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('_recaptcha', EWZRecaptchaType::class, [
'mapped' => false,
'constraints' => [
new RecaptchaTrue(),
],
'attr' => [
'defer' => true,
'async' => true,
],
]);
}
public static function getExtendedTypes(): iterable
{
return [SecurityLoginType::class];
}
}
并将该扩展注册到 configservices.yml
app.form.extension.type.security_login:
class: App\Form\Extension\SecurityLoginTypeExtension
tags:
- { name: form.type_extension, extended_type: Sylius\Bundle\UiBundle\Form\Type\SecurityLoginType }
并在 SyliusUiBundleSecurity_login.html.twig。
...
{% form_theme form '@EWZRecaptcha/Form/ewz_recaptcha_widget.html.twig' %}
{{ form_errors(form._recaptcha) }}
{{ form_widget(form._recaptcha, { 'attr': {
'options' : {
'theme': 'light',
'type': 'image',
'size': 'normal'
},
} }) }}
...
有什么建议吗.先谢谢了。