Symfony - 从源代码中删除所需的属性时没有 form_error
Symfony - Don't have form_error when removing required attr from source code
我刚刚在我的 symfony 项目中注意到,如果我有一个具有 不可空字段 的实体,并且在 formType 中我确保该字段 是必需的.
因此在页面呈现中,如果我执行 "inspect the element" 并手动 从字段中删除 "required" 属性 ,那么 我可以验证,在这种情况下,我会遇到理论错误,而不是停留在带有简单验证错误的表单页面上
SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'titre'
ne peut être vide (null)
但是,我在我的 Twig 文件中使用 {{form_row(form.field)}}
,所以我也应该有 form_error。
这是否意味着对于我所有的实体,我必须每次都添加 @Assert\NotNull
以避免这个问题?就算不自动管理也显得牵强
如果您需要服务器端验证,使用 @Assert\NotNull
注释确实是正确的方法。
或者,如果您不想触及您的实体,您可以在表单类型中添加约束:
'required' => true,
'constraints' => new Assert\NotNull(),
现在,如果您真的想要将原则类型自动映射到 Symfony 验证中,请阅读以下文章:
https://symfony.com/blog/new-in-symfony-4-3-automatic-validation
该功能存在一些问题,导致 Symfony 团队默认禁用它。解决方案是取消注释 config/packages/validator.yaml
中的以下行:
#auto_mapping:
# App\Entity\: []
Symfony 4.4 还附带了两个新注释(@Assert\EnableAutoMapping
和 @Assert\DisableAutoMapping
),允许您在 per-class/field 基础上 enable/disable 该功能
我刚刚在我的 symfony 项目中注意到,如果我有一个具有 不可空字段 的实体,并且在 formType 中我确保该字段 是必需的.
因此在页面呈现中,如果我执行 "inspect the element" 并手动 从字段中删除 "required" 属性 ,那么 我可以验证,在这种情况下,我会遇到理论错误,而不是停留在带有简单验证错误的表单页面上
SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'titre' ne peut être vide (null)
但是,我在我的 Twig 文件中使用 {{form_row(form.field)}}
,所以我也应该有 form_error。
这是否意味着对于我所有的实体,我必须每次都添加 @Assert\NotNull
以避免这个问题?就算不自动管理也显得牵强
如果您需要服务器端验证,使用 @Assert\NotNull
注释确实是正确的方法。
或者,如果您不想触及您的实体,您可以在表单类型中添加约束:
'required' => true,
'constraints' => new Assert\NotNull(),
现在,如果您真的想要将原则类型自动映射到 Symfony 验证中,请阅读以下文章: https://symfony.com/blog/new-in-symfony-4-3-automatic-validation
该功能存在一些问题,导致 Symfony 团队默认禁用它。解决方案是取消注释 config/packages/validator.yaml
中的以下行:
#auto_mapping:
# App\Entity\: []
Symfony 4.4 还附带了两个新注释(@Assert\EnableAutoMapping
和 @Assert\DisableAutoMapping
),允许您在 per-class/field 基础上 enable/disable 该功能