0

今日、Zend Framework アプリケーションでバグに遭遇しました。これはケースです:

正規表現バリデータを持つ要素を持つフォームがあります。フォームをテストしたところ、要素に値 0 を指定できないことがわかりました。Zend からエラーが表示され、要素が入力されていないことがわかります。

要素:

$element = $this->createElement( "text", "amount", array( "label" => "Amount", "required" => true ) );
$element->addValidator( 'regex', false, array( '/^[-]?([0-9]+)(([,.][0-9]+)+)?$/' ) );

送信された値が 0 のときに、Zend が要素に入力していないと言う理由を誰か教えてもらえますか?

どうも

4

1 に答える 1

3

これは非常に簡単です。"required" を に設定するとtrue、Zend_Form_Element は自動的にnotEmpty()バリデータをバリデータ スタックの一番上に追加します。

したがって、null、0、"" などの値が考慮されfalse、このバリデータはフォームにエラーを設定します。

詳細については、マニュアルを参照してください。

Zend_Validate_NotEmpty のデフォルトの動作

デフォルトでは、このバリデーターは、PHP の empty() 関数を使用したときに予想されるものとは異なる動作をします。特に、このバリデーターは、整数 0 と文字列 '0' の両方を空として評価します。

$valid = new Zend_Validate_NotEmpty();
$value  = '';
$result = $valid->isValid($value);
// returns false
于 2012-03-02T14:19:31.083 に答える