フォームに 2 つのテキスト フィールドがあり、空の値や同じ文字列が含まれていないことを確認する必要があります。
私が作成したカスタム バリデータは Zend_Validate_Abstract を拡張し、正しいエラー メッセージを返すという点で正しく動作します。この場合、isEmpty または isMatch のいずれかです。
ただし、ドキュメントには、addErrorMessages を使用して、表示される正しいエラー メッセージを定義するように記載されています。
この場合、私は添付しました
->addErrorMessages(array("isEmpty"=>"foo", "isMatch"=>"bar"));
フォームフィールドへ。
私が読んだすべてによると、isValid() から「isEmpty」を返す場合、エラー メッセージは「foo」と表示され、「isMatch」を返す場合は「bar」と表示されるはずです。
これは私が遭遇しているケースではありません。$this->_error() を何に設定しても、false を返すと、エラー メッセージ配列の 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")
ただし、どちらかがエラーをスローした場合は、実際のエラーに関係なく、最後に設定されたエラー メッセージが表示されます。
ここからどこへ行くべきか完全にはわかりません。
助言がありますか?