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 回答