【发布时间】:2021-05-02 09:15:24
【问题描述】:
我为注册用户创建了一个表单:
$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”复选框。
但是当我提交表单时,验证错误并显示“PLEASE CHECK AGREE TERMS”。
daabas 中的 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}) }}
我该如何解决这个问题?
【问题讨论】:
-
所以你的前端有一个带有复选框的表单,必须选中它,但是在你的管理页面上必须跳过这个字段?
-
@IhorVyspiansky 嗨,是的,用户必须选择复选框,但在管理面板中我们不需要显示和选择复选框,并且在管理注册页面控制器中我为数据库设置了同意条款,因为它在数据库中不为空
-
您可以将每个约束组织成 1 个或多个“验证组”,然后针对 1 组约束应用验证。例如,将在您的前端和管理页面上检查的字段可能会标记为
'groups' => ['Default', 'registration']或'groups' => ['admin', 'registration']。并且必须在前端检查的字段仅作为'groups' => ['registration']。更多细节在这里stackoverflow.com/a/13200272/2224394和symfony.com/doc/current/validation/groups.html