来自实体映射元数据的验证规则

时间:2012-08-23 14:17:49

标签: symfony-forms symfony-2.1

请问某人,有关Symfony2如何使用ORM元数据自动构建验证规则的一些启示吗?我正在使用Symfony2.1。

例如,如果我们的Foo实体具有必需的name属性,我们将使用以下Doctrine metada(作为注释):

@ORM\Column(name="name", type="string", length=255, nullable=false)

但是,如果我们希望在服务器端对其进行验证,我们必须使用nullable重复Assert信息:

@Assert\NotBlank()

另一方面,如果我们的number属性具有integer类型,则会自动将其用作验证规则,而无需使用任何@Assert注释。

@ORM\Column(name="number", type="integer", nullable=true)
//@Assert\Type(type="integer") is no needed

1 个答案:

答案 0 :(得分:3)

基本上,您有两个不同的层:

持久层使用元数据将验证规则添加到数据库。在Doctrine2中,您可以使用注释,但使用Propel,您可以使用XML描述数据库。它主要用于定义SQL语句(基本上nullable=false在SQL NOT NULL中转换)。

验证层用于在应用程序级别验证您的数据。 Doctrine2元数据用于构建数据库,而Validation层用于验证数据(例如来自用户),然后将数据插入数据库。

您可以使用Validator组件(如业务验证规则)在应用程序级别添加更多约束。而且,您不应该依赖数据库来验证数据。

由于您有两个不同的图层,有两个不同的问题,因此无法将它们混合在一起。

相关问题