在Zend Framework 2 + Doctrine 2中验证和更新实体

时间:2013-07-16 19:24:51

标签: forms doctrine-orm zend-framework2 updating

标题可能不准确,如果有人找到更好的标题并且可以更新它,请这样做:)

我有一个小型CMS来编辑用户。 我正在使用Zend Framework 2 + Doctrine 2。 我有一个字段集+表单来添加用户和(可能)相同的用户来更新它们。

用户实体包含以下字段:id,username,password,email。

字段集有两个验证程序,用于检查用户名和电子邮件是否已存在。 由于我使用相同的方式来更新用户,当我更改例如用户的用户名并保持电子邮件相同时,它会抛出“电子邮件存在”的错误(由于验证器而导致正常)和当我更改用户名并保留电子邮件等时也一样。

我想要的是避免这种行为,并且只有当它们真正被更改/更新时才会检查它们。

我想到了一些方法,但我不确定“最佳”方法是什么。

  • 硬编码整个事情,检查字段是否发生变化然后进行验证(这使得整个字段集几乎无用)

  • 在User实体中创建一个接受带有新值的数组的函数,然后将它们与旧值进行比较,并将更改后的函数传递给返回错误的“验证”函数(这大多类似于以前的方式,但我想有点结构化了)

  • 编写一个验证器并将其附加到一个新表单,该表单将查询数据库以检查电子邮件/用户名是否存在且它是否已被特定ID使用,但我不太清楚如何写它,因为我无法弄清楚如何将id和字段传递给验证器

我猜第3个是最好的,因为它一次完成2个作业,通过检查字段是否已更改并且尚未被其他用户使用。

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

我可以发布任何需要的代码,但我认为这更多是一个结构性问题,而且我使用的代码太常见且容易弄清楚。

0 个答案:

没有答案