Forms zf2条令表格int要求不工作
在我的条令实体中,我有一个用于表单验证的getInputFilter方法。上面是其中一个输入元素的代码片段。我的问题是,即使我提交了一个空表单,required=>true也不起作用 经过研究,我发现Int过滤器将空输入转换为0并提交它,这就是所需的验证器无法工作的原因。我只需要解释为什么它可能不起作用 作为我搜索的参考 他建议在验证器之间使用Forms zf2条令表格int要求不工作,forms,doctrine-orm,zend-framework2,required,Forms,Doctrine Orm,Zend Framework2,Required,在我的条令实体中,我有一个用于表单验证的getInputFilter方法。上面是其中一个输入元素的代码片段。我的问题是,即使我提交了一个空表单,required=>true也不起作用 经过研究,我发现Int过滤器将空输入转换为0并提交它,这就是所需的验证器无法工作的原因。我只需要解释为什么它可能不起作用 作为我搜索的参考 他建议在验证器之间使用 $inputFilter->add(array( 'name' => 'seatingCapacity', 'req
$inputFilter->add(array(
'name' => 'seatingCapacity',
'required' => TRUE,
'filters' => array(
array('name' => 'Int'),
),
));
我想知道为什么我应该使用Between,为什么required失败。您应该只使用Between验证器来验证给定值是否在最小值和最大值之间。这与解决空值为0的问题无关
你应该问自己两个问题:
0是有效值吗?
是否要自动将null空字符串和其他空值强制转换为此0?
如果您真的想防止Int过滤器将空值设置为0,那么您可能根本不应该使用此过滤器
您可以改为添加以检查给定值是否为整数。您所需的=>true设置将按预期工作,并且对任何其他非整数输入以及空字符串等的验证将失败。感谢您的时间、精力和努力。 实际上我解决了这个问题 我已经复制粘贴了代码,在这样做的时候我应该小心 我发现没有名为“Int”的过滤器,实际上是“Digits”
$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,
)
)
)
)
));
)
显示错误,因为筛选器名称应为“Digits”。
只有这样才能解决我的问题,并按照我的要求工作
$inputFilter->add(array(
'name' => 'seatingCapacity',
'required' => TRUE,
'filters' => array(
array('name' => 'Int'),
),
)
这是正确的方法,我建议您在引用源代码时要小心,因为我犯了一个不合逻辑的错误
快乐编码感觉您已经回答了自己的问题。。。这就是为什么“必需”验证器不工作的原因我还没有测试过这个东西,所以它只是一个注释而不是一个答案,但是你不能使用过滤器、验证器和验证器的组合吗?谢谢你。非常感谢你的努力。实际上,我没有收到“Value required”错误消息,而我应该担心是否输入了数字。随着时间的推移,我发现0应该是有效值。所以,输入是否为空并不重要,但它不应该包含除数字以外的任何内容。我满足了我的要求。
$inputFilter->add(array(
'name' => 'seatingCapacity',
'required' => TRUE,
'filters' => array(
array('name' => 'Digits'),
),