我在一个表单中有两个文本字段,我需要确保既没有空值也不包含相同的字符串。
我编写的自定义验证器扩展了 Zend_Validate_Abstract 并正常工作,因为它传回了正确的错误消息。在这种情况下:isEmpty 或 isMatch。
但是,文档说要使用 addErrorMessages 来定义要显示的正确错误消息。
在这种情况下,我附上了
->addErrorMessages(array("isEmpty"=>"foo", "isMatch"=>"bar"));
到表单域。
根据我读过的所有内容,如果我从 isValid() 返回“isEmpty”,我的错误消息应该是“foo”,如果我返回“isMatch”,那么它应该是“bar”。
这不是我遇到的情况。如果我从有效返回 false,无论我将 $this->_error() 设置为什么,我的错误消息都会显示“foo”,或者我在错误消息数组的 index[0] 处的任何内容。
如果我没有定义errorMessages,那么我只会得到我为显示传回的错误代码,我会得到正确的错误代码,这取决于我传回的内容。
如何捕获错误代码并在表单中显示正确的错误消息?
在我正确解决之前,我已经实施的修复是将完整消息作为错误代码从自定义验证器传回。这将在这种情况下起作用,但错误消息是特定于该页面的,并且实际上不允许重用代码。
我已经尝试过的事情:我已经尝试过验证器链接,以便我的自定义验证器仅检查匹配项:
->setRequired("true")
->addValidator("NotEmpty")
->addErrorMessage("URL May Not Be Empty")
->addValidator([*customValidator]*)
->addErrorMessage("X and Y urls may not be the same")
但同样,如果其中任何一个引发错误,则将显示最后一个要设置的错误消息,而不管错误到底是什么。
我不完全确定从这里去哪里。
有什么建议么?