【问题标题】:Validation in Symfony2: Entity vs FormType - best practices?Symfony 中的验证:实体和表单类型 - 最佳实践?
【发布时间】:2016-05-19 13:55:42
【问题描述】:

在将验证约束放入您的项目时,最佳做法是什么?

在大多数情况下,您将其保存在 Entities 或 FormTypes 中?

有什么好处和坏处?

这就是我的意思:

FormType 示例

$builder
   ->add('firstName', TextType::class, array(
       'constraints' => array(
           new NotBlank(),
       ),
   ))
;

实体示例

class Author
{
    /**
     * @Assert\NotBlank()
     */
    protected $firstName;
}

【问题讨论】:

    标签: php validation symfony doctrine-orm


    【解决方案1】:

    我的回答是:两者都

    有时您的约束将适用于您的实体应用程序范围。但有时约束仅适用于您的表单上下文。在后一种情况下,您可以直接在表单中使用约束,也可以使用 validation_groups。

    我最倾向于使用实体约束,因为我发现它更简洁并且不会在我的应用程序中引入不一致。

    【讨论】:

    • 最好的解决方案仍然是不使用实体作为数据对象。编写数据传输对象以避免大量麻烦并使表单更容易。在这种情况下,我可以说你的答案确实是正确的。
    • 它只是一个带有 getter/setter (POPO) 的数据对象,就像我的 ChangeUsernameType 有一个 ChangeUsernameData,它只是保存旧用户名和新用户名,我的类型在新用户名上有重复类型并匹配旧用户名针对现有用户名。一旦提交并有效,我只需 $user->setUsername($myDto->getUsername());我刷新我的用户。这可以防止我的实体进入无效状态,甚至更糟糕的是,在这种状态下被意外刷新。这也意味着我可以塑造我的形式而不受我的模型的限制。
    • 感谢您的解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多