ZF-10259: CLONE -"max" option of Zend_Form StringLength validator considered as "min" option when "min" option is omitted

Description

When you create a form element from .ini file, and add a StringLength validator to your element with a .max option but without .min option, then .max is wrongly interpreted as .min.

Example:


user_details.elements.firstname.options.validators.strlen.validator = "StringLength"
user_details.elements.firstname.options.validators.strlen.options.max = "30"

Let's say I input "foo" as firstname Actual result:{quote} - form does not validate - following error message is displayed: 'foo' is less than 30 characters long {quote} Expected result:{quote} - form should validate - no error should be displayed {quote} NOTE: this bug may impact other validators as well. Problem comes from Zend_Form_Element::_loadValidator() ``` $validator['options'] is passed to constructor without taking into consideration options name<

Temporary workaround: - always specify a min length as well (set it to 0)

Comments

Witnessing this EXACT same behavior using both 1.10.5 and 1.10.7

Same workaround temporarily resolves problem.

Unable to reproduce. Please give additional information for reproduction.

The following test does not fail (but should according to your description):


    public function testValidatorsGivenArrayKeysOnValidation2()
    {
        $firstname = new Zend_Form_Element('firstname');
        $firstname->addValidator('StringLength', true, array('max' => 30));
        $form = new Zend_Form(array('elements' => array($firstname)));
        $this->assertTrue($form->isValid(array('firstname' => 'abcde')));
    }

My mistake. The configuration of this site accidentally pointed Zend references to a copy of the 1.9.2 Framework instead of the current release.

Thank you for your help.

Closing as non-issue

Correct fix version as it has been deleted unintentionally by another user