我遇到了以下问题。我写了(基于教程)表单验证。文本字段工作正常,但整数字段表现奇怪。
这是我的验证员:
$inputFilter->add($factory->createInput(array(
'name' => 'zip',
'required' => false,
'filters' => array(
array('name' => 'Int'),
),
)));
它位于我的Entity.php中,就像其他过滤器一样。奇怪的是,当我将它设置为required
时,这个甚至不接受字符串而忽略true
。我尝试将Int
替换为Digits
,然后导致表单接受required
但仍接受字符串。
有什么想法吗?谢谢!
答案 0 :(得分:10)
尝试使用Between验证程序:
$inputFilter->add($factory->createInput(array(
'name' => 'zip',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
'validators' => array(
array(
'name' => 'Between',
'options' => array(
'min' => 1,
'max' => 1000,
),
),
),
)));
答案 1 :(得分:3)
这是一个古老的主题,但我应该提到Filters
不会导致验证错误,它们在后台工作并以静默方式完成工作。
例如Int
过滤器将从输入中删除任何非整数,因此当您执行$form->getData()
时,具有Int
过滤器的字段将只有整数值,如果为空,则为0
答案 2 :(得分:1)
array(
'name' => 'not_empty',
),
array(
'name' => 'Digits',
), array(
'name' => 'Between',
'options' => array(
'min' => 0,
'max' => 1,
),
),