当0为0时,Zend Form Element Regex Validator似乎拒绝了值

时间:2012-03-02 13:56:14

标签: php zend-framework zend-form-element zend-validate

今天,我在Zend Framework应用程序中遇到了一个错误。情况就是这样:

我有一个带有元素的表单,上面有一个正则表达式验证器。在测试表单时,我发现我无法为元素提供值0。 Zend给了我一个错误,告诉我我没有填写元素。

元素:

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

有谁可以告诉我Zend告诉我当提交的值为0时我没有填写元素的原因是什么?

THX

1 个答案:

答案 0 :(得分: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