Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Form元素正则表达式验证器在0时似乎拒绝值_Php_Zend Framework_Zend Form Element_Zend Validate - Fatal编程技术网

Php Zend Form元素正则表达式验证器在0时似乎拒绝值

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

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

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

要素:

$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