繁体   English   中英

在 Symfony 中提交表单时出现验证错误

[英]Validation error when submit form in Symfony

我为注册用户创建了一个表单:

$builder
->add('username', TelType::class)
->add('passwordField', PasswordType::class, [
    'mapped' => false,
    'constraints' => [
        new NotBlank([
            'message' => 'Error'
        ]),
        new Length([
            'min' => 6,
            'minMessage' => 'Error'
        ])
    ]
])
->add('firstname')
->add('lastname')
->add('agreeTerms', CheckboxType::class, [
    'mapped' => false,
    'constraints' => [
        new IsTrue([
            'message' => 'PLEASE CHECK AGREE TERMS'
        ])
    ]
])
->add('submit', SubmitType::class);

现在我想用管理面板添加用户。 我在我的管理面板中创建了一个“添加用户”页面。

我不想在管理面板的“添加用户”页面中添加“agreeTerms”复选框。

但是当我提交表单时,验证错误并显示“请检查同意条款”。

daabas 中的 AgreeTerms 不能是 null。

我在我的 twig 模板中使用它来表示不显示同意条款复选框:

{{ form_start(addUsersForm) }}
        <div>
            {{ form_widget(addUsersForm.username, {
                'required': true
            })}}
            {{ form_label(addUsersForm.username) }}
        </div>
        <div>
            {{ form_widget(addUsersForm.pass, {
                'required': true
            })}}
            {{ form_label(addUsersForm.pass) }}
        </div>
        <div>
            {{ form_widget(addUsersForm.name)}}
            {{ form_label(addUsersForm.name) }}
        </div>
        <div>
            {{ form_widget(addUsersForm.lastname)}}
            {{ form_label(addUsersForm.lastname) }}
        </div>
{{ form_end(addUsersForm, {'render_rest': false}) }}

我该如何解决这个问题?

首先将此添加到您的表单创建中,例如:

$form = $this->createForm(UserType::class,null,[
    'validation_groups' => ['adminRegistration']
]);

并在 UserType.php 末尾添加以下内容:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => User::class,
        'validation_groups' => ['registration']
    ]);
}

然后将协议条款更改为:

->add('agreeTerms', CheckboxType::class, [
    'mapped' => false,
    'constraints' => [
        new IsTrue([
            'groups' => 'registration',
            'message' => 'PLEASE CHECK AGREE TERMS'
        ])
    ]
])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM