今天,我在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
答案 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