Forms 验证和更新Zend Framework 2+条令2中的实体

Forms 验证和更新Zend Framework 2+条令2中的实体,forms,doctrine-orm,zend-framework2,updating,Forms,Doctrine Orm,Zend Framework2,Updating,标题可能不太准确,如果有人找到更好的标题并可以更新,请执行以下操作: 我有一个小的CMS编辑用户。 我使用的是Zend框架2+原则2。 我有一个fieldset+表单来添加用户,也可能是同一个表单来更新用户 用户实体具有以下字段:id、用户名、密码、电子邮件 字段集有两个验证器,用于检查用户名和电子邮件是否已存在。 由于我使用相同的方法来更新用户,当我更改用户的用户名并保持电子邮件不变时,它会抛出一个错误,即电子邮件存在,这是由于验证程序的原因,并且在我更改用户名并保持电子邮件等时也是一样的 我

标题可能不太准确,如果有人找到更好的标题并可以更新,请执行以下操作:

我有一个小的CMS编辑用户。 我使用的是Zend框架2+原则2。 我有一个fieldset+表单来添加用户,也可能是同一个表单来更新用户

用户实体具有以下字段:id、用户名、密码、电子邮件

字段集有两个验证器,用于检查用户名和电子邮件是否已存在。 由于我使用相同的方法来更新用户,当我更改用户的用户名并保持电子邮件不变时,它会抛出一个错误,即电子邮件存在,这是由于验证程序的原因,并且在我更改用户名并保持电子邮件等时也是一样的

我想要的是避免这种行为,并使其仅在它们真正更改/更新时进行检查

我想了一些方法,但我不确定最好的方法是什么

通过检查字段是否更改,然后进行验证,对整个过程进行硬编码,这使得整个字段集几乎毫无用处

在用户实体中创建一个函数,该函数接受带有新值的数组,然后将它们与旧值进行比较,并将更改后的值传递给一个验证函数,该函数返回的错误与前一种方法大致相同,但我想结构更为结构化

编写一个验证器并将其附加到一个新表单,该表单将查询db,以检查电子邮件/用户名是否存在,并且特定id是否已经在使用它,但我不太确定如何编写它,因为我不知道如何将id和字段传递给验证器

我想第三个会是最好的,因为它一次做两个作业,通过检查字段是否已更改并且未被其他用户使用

你有什么建议?你如何处理这种情况


我可以发布任何需要的代码,但我认为这更像是一个结构性问题,我使用的代码太常见,很容易理解。

iirc-Validator正是您需要的。也会有帮助。正如所说的唯一对象或第三种方法,当您必须用旧过滤器扩展新过滤器时,这是传递ID的一种方法。