Zend Form Element Regex Validator, кажется, отрицает значение, когда 0
Сегодня я столкнулся с ошибкой в моем приложении Zend Framework. В этом случае:
У меня есть форма с элементом, который имеет валидатор регулярных выражений. При проверке формы я обнаружил, что не могу предоставить значение 0 для элемента. Зенд дает мне ошибку, говоря, что я не заполнил элемент.
Элемент:
$element = $this->createElement( "text", "amount", array( "label" => "Amount", "required" => true ) );
$element->addValidator( 'regex', false, array( '/^[-]?([0-9]+)(([,.][0-9]+)+)?$/' ) );
Может кто-нибудь сказать мне, что может быть причиной того, что Zend говорит мне, что я не заполнил элемент, когда отправленное значение равно 0?
Спасибо
1 ответ
Это очень просто, когда вы устанавливаете "обязательно" как true
, Zend_Form_Element автоматически добавляет валидатор notEmpty() вверху стека валидаторов.
Поэтому учитываются любые значения NULL, 0, "" и т. Д. false
, и этот валидатор установил ошибку в вашей форме.
Смотрите руководство для получения дополнительной информации:
Поведение по умолчанию для Zend_Validate_NotEmpty
По умолчанию этот валидатор работает иначе, чем вы ожидаете, когда работаете с PHP-функцией empty(). В частности, этот валидатор будет оценивать как целое число 0, так и строку "0" как пустые.
$valid = new Zend_Validate_NotEmpty();
$value = '';
$result = $valid->isValid($value);
// returns false