在 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);
现在我想使用管理面板添加用户。我在管理面板中创建了一个“添加用户”页面。
我不想在管理面板的“添加用户”页面中添加“同意条款”复选框。
但是当我提交表单时,验证错误并显示“请检查同意条款”。
Daabas 中的 AgreeTerms 不能为空。
我在我的 twig 模板中使用这个不显示 agreeTerms 复选框:
{{ 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'
])
]
])
我为注册用户创建了一个表单:
$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);
现在我想使用管理面板添加用户。我在管理面板中创建了一个“添加用户”页面。
我不想在管理面板的“添加用户”页面中添加“同意条款”复选框。
但是当我提交表单时,验证错误并显示“请检查同意条款”。
Daabas 中的 AgreeTerms 不能为空。
我在我的 twig 模板中使用这个不显示 agreeTerms 复选框:
{{ 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'
])
]
])