Php Zend Framework 2,具有条令2自定义验证和对象结构

Php Zend Framework 2,具有条令2自定义验证和对象结构,php,oop,doctrine-orm,zend-framework2,Php,Oop,Doctrine Orm,Zend Framework2,在ZF2和Doctrine2中,支持自定义验证的合适类和对象结构是什么 例如,我有一个简单的用户实体,我希望检查提供的电子邮件是否唯一。此验证需要访问EntityManager,因此无法从其getInputFilter方法中的实体进行验证 支持这一点的适当应用程序结构是什么 在我当前的工作流中,用户名在控制器中得到验证,但这似乎有点错误。相关的对象和脚本是 视图:edituser.phtml 控制器:UserController.php -获取用户post输入并提供服务 -创建验证器,并检查($

ZF2Doctrine2中,支持自定义验证的合适类和对象结构是什么

例如,我有一个简单的用户实体,我希望检查提供的电子邮件是否唯一。此验证需要访问
EntityManager
,因此无法从其
getInputFilter
方法中的实体进行验证

支持这一点的适当应用程序结构是什么

在我当前的工作流中,用户名在控制器中得到验证,但这似乎有点错误。相关的对象和脚本是 视图:edituser.phtml 控制器:UserController.php -获取用户post输入并提供服务 -创建验证器,并检查($validator->isValid()) 实体:User.php -执行其他基本属性验证,但无法执行isUnique


如果需要创建自定义验证类,哪个对象将实例化并使用它?我是否绝对需要在实体之外有一个单独的用户业务模型,才能有一个健康的OOP结构?

使用DoctrineOrm模块Crisp附带的object exists validator,这实际上不是我的问题,但谢谢。我目前正在使用同一个验证器,但我正在从控制器实例化并调用它。既然我不认为这是使用它的最佳方式,你能推荐我应该在哪个班级使用它吗?啊,好的。我看我看错了。但有一件事我现在还不清楚,那就是
实体:User.php-执行其他基本属性验证
。您是说您的实体负责自己的验证吗?表单通常会处理这个问题,提供字段,并通过实现
InputFilterAwareInterface
,提供应用于这些字段的过滤器和验证器。考虑到这一点,通常情况下,您会将实体管理器作为表单的依赖项注入,然后将其与输入过滤器规范中的对象存在验证器一起使用。是的,我的实体实现的InputFilterWareInterface和验证由其inputFilter执行。我这样建模是因为在我之前使用的一个框架(Kohana)中,验证是以这种方式在实体级别执行的。我现在按照您的建议,使用了一个表单类来实现这一点。我必须说,这是一个更好的解决办法和改进。谢谢你的建议!我唯一不太满意的是编写“太多”代码:实体属性、表单字段和inputFilter元素似乎都引用相同的属性。