Php Zend Form元素正则表达式验证器在0时似乎拒绝值
今天,我在Zend Framework应用程序中遇到了一个bug。情况就是这样: 我有一个表单,其中有一个元素,上面有一个正则表达式验证器。在测试表单时,我发现我不能为元素提供值0。Zend给了我一个错误,告诉我我没有填写元素 要素:Php Zend Form元素正则表达式验证器在0时似乎拒绝值,php,zend-framework,zend-form-element,zend-validate,Php,Zend Framework,Zend Form Element,Zend Validate,今天,我在Zend Framework应用程序中遇到了一个bug。情况就是这样: 我有一个表单,其中有一个元素,上面有一个正则表达式验证器。在测试表单时,我发现我不能为元素提供值0。Zend给了我一个错误,告诉我我没有填写元素 要素: $element = $this->createElement( "text", "amount", array( "label" => "Amount", "required" => true ) ); $element->addVali
$element = $this->createElement( "text", "amount", array( "label" => "Amount", "required" => true ) );
$element->addValidator( 'regex', false, array( '/^[-]?([0-9]+)(([,.][0-9]+)+)?$/' ) );
有谁能告诉我,当提交的值为0时,Zend告诉我没有填写元素的原因是什么
Thx非常简单,当您将“required”设置为
true
时,Zend\u Form\u元素会自动在验证器堆栈的顶部添加一个验证器
因此,任何null、0、“”等值均被视为false
,此验证器会将错误设置到表单中
有关更多信息,请参阅手册:
Zend_Validate_NotEmpty的默认行为
默认情况下,此验证器的工作方式与您工作时预期的不同
使用PHP的empty()函数。特别是,这个验证器将
将整数0和字符串“0”计算为空
很简单,当您将“required”设置为
true
时,Zend_Form_元素会自动在验证器堆栈的顶部添加一个验证器
因此,任何null、0、“”等值均被视为false
,此验证器会将错误设置到表单中
有关更多信息,请参阅手册:
Zend_Validate_NotEmpty的默认行为
默认情况下,此验证器的工作方式与您工作时预期的不同
使用PHP的empty()函数。特别是,这个验证器将
将整数0和字符串“0”计算为空
$valid = new Zend_Validate_NotEmpty();
$value = '';
$result = $valid->isValid($value);
// returns false