Хе-хе, это обычная проблема, с которой сталкиваются с валидаторами в первый раз. Ключ должен удалить этот один идентификатор из валидатора, внутри вашего валидатора исключить текущий идентификатор пользователя из предложения:
$validator = new Zend_Validate_Db_NoRecordExists(
array(
'table' => 'users',
'field' => 'email',
'exclude' => array(
'field' => 'id',
'value' => $id_to_edit
)
)
);
Изменить: для дальнейшего объяснения того, что это делает. Он по-прежнему получает все адреса электронной почты из базы данных и проверяет, не произошел ли конфликт. Если электронная почта существует, она просто игнорирует электронную почту с id = $ id_to_edit - поэтому, когда пользователь меняет свою электронную почту, но другой пользователь уже имеет эту электронную почту, ошибка все равно выдается!