我有一個窗體中有兩個文本字段,我需要確保既沒有空值也沒有包含相同的字符串。Zend_Validate_Abstract自定義驗證程序不顯示正確的錯誤消息
我編寫的自定義驗證程序擴展了Zend_Validate_Abstract,並正確地工作,因爲它傳遞了正確的錯誤消息。在這種情況下:isEmpty或isMatch。
但是,文檔說使用addErrorMessages來定義要顯示的正確錯誤消息。在這種情況下
,我已附加
->addErrorMessages(array("isEmpty"=>"foo", "isMatch"=>"bar"));
到表單字段。根據我讀過的所有內容,如果我從isValid()返回「isEmpty」,我的錯誤信息應該是「foo」,如果我返回「isMatch」,那麼它應該讀取「bar」。
雖然我並沒有遇到這種情況。如果我返回false是有效的,不管我設置$ this - > _ error()是什麼,我的錯誤消息顯示爲「foo」,或者我在錯誤消息數組的索引[0]處得到的任何內容。
如果我沒有定義errorMessages,那麼我只是得到我傳回給顯示器的錯誤代碼,並且我得到正確的一個,這取決於我傳回的內容。
如何捕獲錯誤代碼並在窗體中顯示正確的錯誤消息?
我已經實施的修復方法,直到我找到正確的方法,是將完整的消息作爲來自自定義驗證程序的錯誤代碼傳回。這將在這種情況下工作,但錯誤消息是特定於此頁面,並不真正允許重新使用代碼。
事情我已經嘗試: 我已經嘗試驗證鏈接,這樣我的自定義的驗證只爲匹配檢查:
->setRequired("true")
->addValidator("NotEmpty")
->addErrorMessage("URL May Not Be Empty")
->addValidator([*customValidator]*)
->addErrorMessage("X and Y urls may not be the same")
但同樣,如果任一拋出一個錯誤,需要設置的最後一條錯誤信息顯示,而不管真正的錯誤是什麼。
我不完全確定該從哪裏出發。
有什麼建議嗎?
謝謝,michal!我會盡快給它一個去。 – 2010-05-19 22:03:30