Hi Kjell,
Zend_Validate_Between does not measure string lengths; it validates a
value that falls between minimum and maximum values. Please try
Zend_Validate_StringLength.
Best regards,
Darby
Kjell Bublitz wrote:
> Hello List!
>
> My problem is that i am sending a long enough string (12345 and
> 123456789, see below), but i always get NOT_BETWEEN
>
> I am new to ZF but i am trying to do my best getting this to work. I am
> using ZendFramework 1.0.1
>
> Please check out the following three snippets and help me out.
>
> Thank you
>
> --------------
> SETUP
>
> $filters = array(
> '*' => array('StringTrim', 'StripTags'),
> 'id' => 'Digits',
> 'page' => 'Alpha'
> );
>
> $validators = array(
> 'username' => array(
> new Zend_Validate_Alnum(),
> new Zend_Validate_Between(4, 30),
> 'breakChainOnFailure' => true,
> 'messages' => array(
> 0 => array(
> Zend_Validate_Alnum::STRING_EMPTY => 'Please enter your username
> in the field below.',
> Zend_Validate_Alnum::NOT_ALNUM => 'Usernames may only contain
> numbers and letters, without spaces.'
> ),
> 1 => array(
> Zend_Validate_Between::NOT_BETWEEN => '%value% - Usernames must be
> between %min% and %max% characters.'
> )
> )
> ),
> 'password' => array(
> new Zend_Validate_Alnum(),
> new Zend_Validate_Between(8, 30),
> 'breakChainOnFailure' => true,
> 'messages' => array(
> 0 => array(
> Zend_Validate_Alnum::STRING_EMPTY => 'Please enter your password
> in the field below.',
> Zend_Validate_Alnum::NOT_ALNUM => 'Passwords may only contain
> numbers and letters, without spaces.'
> ),
> 1 => array(
> Zend_Validate_Between::NOT_BETWEEN => '%value% - Passwords must be
> between %min% and %max% characters.'
> )
> )
> )
> );
>
> $options = array(
> 'allowEmpty' => false,
> 'breakChainOnFailure' => false,
> 'escapeFilter' => 'HtmlEntities',
> 'missingMessage' => 'Field %field% is required by rule %rule%, but
> the field is missing',
> 'notEmptyMessage' => 'You must give a non-empty value for field
> %field%',
> 'presence' => 'optional'
> );
>
> $input_data = array_merge_recursive($_POST, $_GET); // combine
> $this->input = new Zend_Filter_Input($filters, $validators,
> $input_data, $options);
>
> --------------
> TEST
>
> if ($this->input->hasInvalid() || $this->input->hasMissing()) {
> $messages = $this->input->getMessages();
> Zend_Debug::Dump($messages);
> }
>
> --------------
> OUTPUT, after sending a 5 char long string and 9 char long string
>
> array(2) {
> ["username"] => array(1) {
> [0] => string(54) "12345 - Usernames must be between 4 and 30 characters."
> }
> ["password"] => array(1) {
> [0] => string(58) "123456789 - Passwords must be between 8 and 30
> characters."
> }
> }
>
> As you can see by the output, it doesn't even make sense out of itself.
>
> Something weird is going on here ..
>
> Thanks for your time!
>
>