I have a model class that has a validate($data) method. It puts together an
array of validators and eventually comes down to

              $input = new Zend_Filter_Input($filters,$validators,$data);

In ZF 1.7.8, $input->getMessages() returns my custom error messages, works
just as I intend, but the same code in 1.8.2 (and 1.8.4) ignores my error
messages and instead returns the defaults

The following is the array of validators in question (don't look too hard,
it's rather ugly):

$validators = array(

            'datetime' => array(
                new SdnyDate(),
                'fields' =>array('date','time'),
                'breakChainOnFailure' => true,
                'presence' => 'required',
            ),
            'time' => array(
                'NotEmpty',
                'presence' => 'required',
                'messages' => "Time is required",
            ),
            'date' => array(

                'NotEmpty',
                'Date',

array('GreaterThan',date('Y-m-d',mktime(0,0,0,$today['mon'],$today['mday']-1,$today['year']))),
                new Model_Validator_BusinessDay(),
                'presence' => 'required',
                'messages' =>
                array(0=>"Date is required",1=>"Invalid date ",2=>'This date
is in the past'),
                'breakChainOnFailure' => true,
            ),
            'language_id'=>
            array('NotEmpty',
            array('InArray',(array_keys(Model_Languages::getAll(false)))),
            'presence' => 'required',
            'messages'=>array(
                0=>'The language field is required.',
                1 =>'Invalid language id',
                ),
            'breakChainOnFailure' => true,

            ),

            'judge_id'=>array(
                'NotEmpty',

 array('InArray',(array_keys(Model_Judges::getAllActive(false)))),
                'presence' => 'required',
                'messages'=>array(0=>'The judge field is
required.',1=>'Invalid judge id'),
                 'breakChainOnFailure' => true,
            ),

            // make the docket required,
            // and make it match this format: nn-(CR|CIV|MAG|MISC)-x[xxx]
            // javascript will help them get it right
            'docket'=>array(
               'NotEmpty',
                new Zend_Validate_Regex(self::DOCKET_REGEX),
                'messages'=>array(0=>'Docket number is
required',1=>'Malformed docket number'),
                'breakChainOnFailure' => true,
            ),

             'proceeding_id'=>array('NotEmpty',
                 array('InArray',array_keys(

Model_EventTypes::getAllForUserGroup(Zend_Auth::getInstance()->getIdentity()->group,false)
                 )),
                'presence' => 'required',
                'messages'=>array(
                    0=>'The proceeding field is required yo.',
                    1=>'Invalid proceeding id'
                    ),
                 'breakChainOnFailure' => true,
            ),
            'comments' =>array(
                new
Zend_Validate_StringLength(0,$this->getTable()->_metadata['comments']['LENGTH']),
                'messages'
=>array(Zend_Validate_StringLength::TOO_LONG=>'Comments field exceeds
maximum length')
            ),
            // don't let them leave both defts and comments both empty
            'all_fields'=>array(
                    new Model_Validator_OneOrMoreFields(),
                    'fields'=>array('comments','deft_ids'),
                    'messages'=>array("Please enter the defendant(s)
name(s). If a defendant is not found by using the autocompleting field
below, please enter the name in the comments field.")
            ),
        );

Any idea what am I doing wrong?

Thanks.

-- 
David Mintz
http://davidmintz.org/

The subtle source is clear and bright
The tributary streams flow through the darkness

Reply via email to