我正在尝试使用浮点数验证的表单。 验证工作时,它不会让我单击提交按钮,并将显示正确的错误消息。
我正在使用zend框架2,在我的表格中我想要检索酒量。
我正在尝试使用以下代码:
$this->add($factory->createElement(array(
'name' => 'alcohol_vol',
'attributes' => array(
'label' => 'alcohol vol%:',
'filters' => array('Float'),
'type' => 'text',
'required' => true,
),
)));
这实际上没有做任何事情。如果我输入常规文本,它将通过验证。
我也尝试将类型从'text'更改为'Number'但是它不允许我使用浮点数。它只允许非浮点数:)
答案 0 :(得分:2)
没有" Float"在ZF2过滤,我想你可能想要的是" Float" Validator,Float Validator可以像这样添加到ZF2表单中:
$this->add($factory->createElement(array(
'name' => 'alcohol_vol',
'attributes' => array(
'label' => 'alcohol vol%:',
'type' => 'text',
),
)));
$factory = new Zend\InputFilter\Factory();
$this->setInputFilter($factory->createInputFilter(array(
'alcohol_vol' => array(
'name' => 'alcohol_vol',
'required' => true,
'validators' => array(
array(
'name' => 'Float',
),
),
),
)));
然后你应该在控制器中验证表单,上面的验证器仍然应该设置为表单。如果输入不是float,则input元素将具有无效消息:
$form->setData($userInputData);
if (!$form->isValid()) {
$inputFilter = $form->getInputFilter();
$invalids = $inputFilter->getInvalidInput();
var_dump($invalids);
// output: 'abc' does not appear to be a float
}
答案 1 :(得分:1)
我认为你可以使用这个过滤器
new Zend\I18n\Filter\NumberFormat("en_US", NumberFormatter::TYPE_DOUBLE);
答案 2 :(得分:0)
我推荐Zend \ I18n \ Validator \ Float类。用法示例:
$floatInput = new Input('myFloatField');
$floatInput->getValidatorChain()
->attach(new \Zend\I18n\Validator\Float());
请参阅: