Я пытаюсь добавить ReCaptcha в форму входа Sylius, я установил stefandoorn / sylius-recaptcha-plugin и выполнил все инструкции по установке, но он не проверяется, форма регистрируется, даже когда капча поле пусто, ошибка не выдается. В настоящее время я использую Sylius v1.7
Вид работает нормально и выглядит так: Войти с помощью captcha Я расширил 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];
}
}
И зарегистрируйте расширение в config / services.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 }
И переопределите временный вход в SyliusUiBundle / Security / _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'
},
} }) }}
...
Любые предложения по этому поводу. Заранее спасибо.