Zend framework2 仅当不为空时,所需的ZF2输入验证器不为空
我正在构建一个带有输入过滤器的表单,所有这些都在Zend Framework 2中。我使用数组来配置输入、过滤器和验证器。那么,假设我有一些意见:Zend framework2 仅当不为空时,所需的ZF2输入验证器不为空,zend-framework2,Zend Framework2,我正在构建一个带有输入过滤器的表单,所有这些都在Zend Framework 2中。我使用数组来配置输入、过滤器和验证器。那么,假设我有一些意见: array( 'name' => 'foo', 'required' => true, ) 在页面上,有一些jQuery代码可以选择性地隐藏此输入。如果是,则隐藏并禁用输入。提交时,表单数据上的var_dump会给出foo=>null(可能是因为它实际上没有在post数据中提交,因此表单输入从未给出值)。如果输入未隐藏且
array(
'name' => 'foo',
'required' => true,
)
在页面上,有一些jQuery代码可以选择性地隐藏此输入。如果是,则隐藏并禁用输入。提交时,表单数据上的var_dump会给出foo=>null
(可能是因为它实际上没有在post数据中提交,因此表单输入从未给出值)。如果输入未隐藏且未填写,则在提交时,它具有foo=>字符串“”(长度=0)
如果使用输入,我想要求输入有一个值。那么,是否有一些设置可以添加到配置数组中,允许null通过验证,但拒绝空字符串值?或者我需要编写自定义验证器吗?是的,您应该使用NotEmpty验证器
$inputFilter = new \Zend\InputFilter\InputFilter ();
$inputFilter->add ([
'name' => 'foo',
'validators' => [
[
'name' => 'not_empty',
'options' => [
'type' => 'string'
]
]
]
]);
$form->setInputFilter ($inputFilter);
为了其他读者,这里的关键是,如果您不指定自己的非空验证器,那么将创建一个更具限制性的默认验证器。我最终让我的用例开始工作。这里还有几个关键点是,我仍然需要指定所需的属性(否则它似乎假设它是必需的?)。此外,我还有一个StringLength验证器,当输入为null时,它会出现问题,所以我不得不放弃它。还没有研究是否可以使用空值使StringLength正常。