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