Как предоставить валидатор для числа с плавающей запятой в форме zend?

#php #zend-framework #zend-form

#php #zend-framework #zend-форма

Вопрос:

Ниже приведен фрагмент кода, который был взят из формы,

 $debit_amount = new Zend_Form_Element_Text('debit_amount', array(
                    'label' => 'Debit_amount',
                    'value' => '',
                    'class' => 'text-size text',
                    'required' => true,
                    'tabindex' => '13',
                    'validators' => array(
                        array('Digits', false, array(
                                'messages' => array(
                                    'notDigits' => "Invalid entry, ex. 10.00",
                                    'digitsStringEmpty' => "",
                            ))),
                        array('notEmpty', true, array(
                                'messages' => array(
                                    'isEmpty' => 'Debit_amount can't be empty'
                                )
                        )),

                    ),
                    'filters' => array('StringTrim'),
                    //'decorators' => $this->requiredElementDecorators,
                    //'description' => '<img src="' . $baseurl . '/images/star.png" alt="required" />',
                ));
        $this->addElement($debit_amount); 
  

Когда я пытаюсь отправить форму, используя плавающее число, она выдает мою ошибку «Неверный ввод ….». Он не проверяет число с плавающей запятой. Любезный совет.

Ответ №1:

Используйте Zend_Validate_Float:

 'validators' => array(
    array('Float', ...
  

Ответ №2:

Вы получаете сообщение об ошибке, потому Digits что валидатор проверяет только цифры. Об этом есть комментарий в документации Zend_Validate:

 Note: Validating numbers
When you want to validate numbers or numeric values, be aware that this validator only 
validates digits. This means that any other sign like a thousand separator or a comma 
will not pass this validator. In this case you should use Zend_Validate_Int or 
Zend_Validate_Float. 
  

Как говорит @Zyava, использование Zend_Validate_Float — это правильный путь.