2017-08-29 56 views
0

我有一个基于Silex的应用程序,我使用Doctrine作为我的ORM。在Symfony堆栈外使用UniqueEntity

我有一个问题,我试图让用户试图重用电子邮件时出现干净的错误,我发现验证器UniqueEntity,但它似乎是为Symfony的完整堆栈版本设计的。

我的问题是,这是真的吗?我正在做一个假设,因为我没有找到任何人在Symfony之外成功使用它。

我的第二个问题是,如果我无法使用UniqueEntity,那么我的下一个最佳选择是什么?我正在使用Symfony验证器组件,并且希望使用插入到该组件中的内容将其全部保留在同一代码块中。

+0

我在silex中使用它,但安装相当复杂。我记得有必要创建2个服务:1.实现'ManagerRegistry'接口的服务。它是symfony中的'doctrine'服务的类比。 2.独特的验证服务(只是UniqueEntity验证器的实例)。 –

+1

虽然有可能您可能会发现只实施您自己的唯一电子邮件标识符会更容易。 Symfony Doctrine Bridge UniqueEntity设计精良,可处理巨大的边缘案例。你真正需要的是在自定义约束中包装一个简单的查询。文档告诉你如何。 – Cerad

+0

我只是做一个自定义的验证器约束,听起来像是更简单的方法。 – Eman

回答

0

您可以在Silex中使用UniqueEntity。

以下是Doctrine ManagerRegistry实现 - saxulum/saxulum-doctrine-orm-manager-registry-provider的服务提供程序包。您也可以在READMEUniqueEntity验证器中找到如何使用它的说明。

但是你可能想要实现你自己的UniqueEntity验证器。

例如,如果您想验证DTO对象(或任何非实体对象),因为它不是由Symfony的的UniqueEntity验证的支持(见GitHub上issue)。

+0

我实际上决定只是建立自己的自定义限制 – Eman