Validation 在FormType或实体/Yaml中使用验证
使用验证实体、Yaml或FormType时有哪些区别 表格类型Validation 在FormType或实体/Yaml中使用验证,validation,symfony,Validation,Symfony,使用验证实体、Yaml或FormType时有哪些区别 表格类型 .... ->add('email', 'text', array ( 'constraints' => array ( new Email(array('message' => 'error Email')) ) )) .... 亚马尔
....
->add('email', 'text', array (
'constraints' => array (
new Email(array('message' => 'error Email'))
)
))
....
亚马尔
实体
{
/**
* @Assert\Email(
* message = "error Email",
* )
*/
protected $email;
}
所有这些方法都是一样的?它们不一样!您混淆了实体验证和表单验证:
- 实体验证属于实体。这意味着不管新数据是来自表单还是ajax查询,也不管您只是设置了一些常量数据。通过对实体调用验证来触发验证。注意:实体验证也在表单验证上运行
- 表单验证属于表单。这意味着您可以使用它们验证表单值(在调用$form->isValid()时)。但这可能会导致无效的实体,因为没有任何东西可以保证您的实体是一致的(只是形式)
除此之外,注释、yml、xml或php格式之间没有区别。只有先例。它们不一样!您混淆了实体验证和表单验证:
- 实体验证属于实体。这意味着不管新数据是来自表单还是ajax查询,也不管您只是设置了一些常量数据。通过对实体调用验证来触发验证。注意:实体验证也在表单验证上运行
- 表单验证属于表单。这意味着您可以使用它们验证表单值(在调用$form->isValid()时)。但这可能会导致无效的实体,因为没有任何东西可以保证您的实体是一致的(只是形式)
除此之外,注释、yml、xml或php格式之间没有区别。只有先例。我认为它们将应用相同的验证约束 我倾向于在validation.yml中保留所有约束,因为在我看来,这是最干净的方法。也更适合翻译 但这一切都取决于你所从事的背景和项目
更新:阅读Riska的条目后,我同意他的观点。最后的结果是一样的,但他有正确的观点。我认为他们会应用相同的验证约束 我倾向于在validation.yml中保留所有约束,因为在我看来,这是最干净的方法。也更适合翻译 但这一切都取决于你所从事的背景和项目
更新:阅读Riska的条目后,我同意他的观点。最后的结果是相同的,但他有正确的观点。是否有方法使用相同的validation.yml,因此应用于Entite的约束也应用于formtype 例如,若实体中的标题字段是50charsm ax length,那个么formttype中的标题字段也是如此 因此,我们可以避免在formtype的add方法中指定最大长度 总之
如何在formtype中使用实体验证约束,以便自动应用相同的构造(要求的最大长度)等?是否有方法使用相同的validation.yml,以便将应用于实体的约束也应用于formtype 例如,若实体中的标题字段是50charsm ax length,那个么formttype中的标题字段也是如此 因此,我们可以避免在formtype的add方法中指定最大长度 总之 如何在formtype中使用实体验证约束,以便自动应用相同的构造(要求的最大长度)等
{
/**
* @Assert\Email(
* message = "error Email",
* )
*/
protected $email;
}