标题可能不太准确,如果有人找到更好的并可以更新它,请这样做:)
我有一个小型 CMS 来编辑用户。我正在使用 Zend Framework 2 + Doctrine 2。我有一个字段集 + 表单来添加用户和(可能)相同的用户来更新它们。
用户实体具有以下字段:id、用户名、密码、电子邮件。
该字段集有两个验证器,用于检查用户名和电子邮件是否已经存在。由于我使用相同的更新用户,当我更改例如用户的用户名并保持电子邮件相同时,它会引发“电子邮件存在”的错误(由于验证器,这是正常的)和当我更改用户名并保留电子邮件等时也是如此。
我想要的是避免这种行为并使其仅在它们真正被更改/更新时才检查它们。
我想到了一些方法,但我不确定“最好”的方法是什么。
通过检查字段是否更改然后进行验证来硬编码整个事情(这使得整个字段集几乎没用)
在 User 实体中创建一个函数,该函数接受具有新值的数组,然后将它们与旧值进行比较,并将更改后的值传递给返回错误的“验证”函数(这与以前的方式很相似,但我猜更有条理)
编写一个验证器并将其附加到一个新表单,该表单将查询数据库以检查电子邮件/用户名是否存在并且特定 ID 尚未使用它,但我不太确定如何编写它,因为我可以t 弄清楚如何将 id 和字段传递给验证器
我猜第三个将是最好的,因为它一次执行 2 个工作,通过检查字段是否已更改并且尚未被其他用户使用。
你有什么建议?你如何处理这种情况?
我可以发布任何需要的代码,但我认为这更多是一个结构性问题,而且我使用的代码太常见且易于理解。