要素があります。私はそれにカスタムバリデータとカスタムフィルタを追加したいと思います。バリデーターは、入力がいくつかの許可された値の1つであることを確認した後、フィルターはいくつかのカスタム値を入力に追加します。これは、フィルタを実行する前に元の入力を最初に検証する必要があることを意味します。私はこの順序でそれを行う。このバリデータの後にこのフィルタを実行する方法
$element = new Zend_Form_Element_Text('element');
$element->addValidator('PermittedValue', false);
$element->addFilter('TotalHyphen', false);
$this->addElement($element);
しかし、この順序は尊重されていない。フィルタが最初に実行され、データが変更されると、バリデータはフィルタ処理されたデータで実行されます。つまり、有効な入力に対しても常に失敗します。意図的な
注意であることをdocumentationからのようだ:検証前検証に提供 フィルタチェーンを通じて 値をZend_Form_Element ::のisValid() フィルター値を濾過で動作します。 の詳細については、 のフィルタセクションを参照してください。
バリデータとフィルタの実行順序を指定するにはどうすればよいですか?
+1。非常にいいですね。私はまた、setPostValidateFilters()メソッドがキー 'postValidateFilters'に対して自動的に(はい?)呼び出されることを知らなかった。 – Marcin
@Marcin:私はそれがオプションが機能する方法だと思います。オプション名に「一致」するメソッドがある場合、そのメソッドは 'setOptions()'の間に呼び出されます。 –
+1非常に優れた実装 – tawfekov