ZF2 输入验证器只在不为空时才为必需的不为空
ZF2 input validator for required not empty only when not null
我正在使用 Zend Framework 2 中的输入过滤器构建一个表单。我正在使用数组来配置我的输入、过滤器和验证器。所以,假设我有一些输入:
array(
'name' => 'foo',
'required' => true,
)
在页面上,有一些 jQuery 代码可以选择性地隐藏此输入。如果是,它会隐藏并禁用输入。提交时,表单数据上的 var_dump 给出 foo => null
(可能是因为它实际上并未在 post 数据中提交,因此表单输入永远不会被赋予值)。如果输入未隐藏且未填写,则在提交时它有 foo => string '' (length=0)
.
如果使用输入,我想要求输入有一个值。那么,是否有一些设置可以添加到我的配置数组中,以允许 null 通过验证,但拒绝空字符串值?还是我需要编写自定义验证器?
是的,你应该使用 NotEmpty 验证器。
$inputFilter = new \Zend\InputFilter\InputFilter ();
$inputFilter->add ([
'name' => 'foo',
'validators' => [
[
'name' => 'not_empty',
'options' => [
'type' => 'string'
]
]
]
]);
$form->setInputFilter ($inputFilter);
我正在使用 Zend Framework 2 中的输入过滤器构建一个表单。我正在使用数组来配置我的输入、过滤器和验证器。所以,假设我有一些输入:
array(
'name' => 'foo',
'required' => true,
)
在页面上,有一些 jQuery 代码可以选择性地隐藏此输入。如果是,它会隐藏并禁用输入。提交时,表单数据上的 var_dump 给出 foo => null
(可能是因为它实际上并未在 post 数据中提交,因此表单输入永远不会被赋予值)。如果输入未隐藏且未填写,则在提交时它有 foo => string '' (length=0)
.
如果使用输入,我想要求输入有一个值。那么,是否有一些设置可以添加到我的配置数组中,以允许 null 通过验证,但拒绝空字符串值?还是我需要编写自定义验证器?
是的,你应该使用 NotEmpty 验证器。
$inputFilter = new \Zend\InputFilter\InputFilter ();
$inputFilter->add ([
'name' => 'foo',
'validators' => [
[
'name' => 'not_empty',
'options' => [
'type' => 'string'
]
]
]
]);
$form->setInputFilter ($inputFilter);