Validator Zend Framework error message

I have a validator error translator associated with my form

  class My_Lib_Forms_Form extends Zend_Form {

    public function init()

   {
       parent::init();

       $translator = new Zend_Translate('array', APPLICATION_PATH . '/languages/errors.php');

       //     
       $this->setTranslator($translator);    
   }
}

Here is the validator validation error translation code:

<?php
return $errors = array(
   Zend_Validate_Alnum::STRING_EMPTY => "    ",
   Zend_Validate_Date::INVALID_DATE => '    --',
   Zend_Validate_Date::INVALID => ' ',
   Zend_Validate_Date::FALSEFORMAT => '    ',
   Zend_Validate_EmailAddress::INVALID_FORMAT => "asdasd",
   Zend_Validate_EmailAddress::INVALID_FORMAT => "     .     local-part@hostname",
   Zend_Validate_EmailAddress::INVALID_HOSTNAME => "'%hostname%'        '%value%'",
   Zend_Validate_EmailAddress::INVALID_MX_RECORD => "'%hostname%'   MX-     '%value%'",
   Zend_Validate_EmailAddress::DOT_ATOM => "'%localPart%'    dot-atom",
   Zend_Validate_EmailAddress::QUOTED_STRING => "'%localPart%'    quoted-string",
   Zend_Validate_EmailAddress::INVALID_LOCAL_PART => "'%localPart%'        '%value%'",
   Zend_Validate_Int::NOT_INT => '    ',
   Zend_Validate_NotEmpty::IS_EMPTY => '    ',
   Zend_Validate_StringLength::TOO_SHORT => '     %min% ',
   Zend_Validate_StringLength::TOO_LONG => '     %max% ',
   My_Lib_Validate_EqualInputs::NOT_EQUAL => '  ',
   My_Lib_Validate_Password::INVALID => '   ',
   My_Lib_Validate_Password::INVALID_LENGTH => '     7  30 ',
   Zend_Captcha_Word::BAD_CAPTCHA => '    ',
   Zend_Captcha_Word::MISSING_VALUE => '    ',
   'userAgreement' => '     ',    
);

How to change validation error message for custom item?

I am trying to do it like this:

$validatorNotEmpty = new Zend_Validate_NotEmpty();
$validatorNotEmpty->setMessages(array(
           Zend_Validate_NotEmpty::IS_EMPTY  => 'agreeRules'));
$userAgreement = new Zend_Form_Element_Checkbox('userAgreement', array(
           'required'    => true,
           'label'       => ',     :',            
           'validators'  => array($validatorNotEmpty),
       ));

And this way too:

$validatorNotEmpty = new Zend_Validate_NotEmpty();
$validatorNotEmpty->setMessage(  '     ',
           Zend_Validate_NotEmpty::IS_EMPTY);
$userAgreement = new Zend_Form_Element_Checkbox('userAgreement', array(
           'required'    => true,
           'label'       => ',     :',            
           'validators'  => array($validatorNotEmpty),
       ));

In any case, I get the message from the translator file, and not my text written by the user.

+3
source share
3 answers

try

   $validatorNotEmpty->setMessages(array('agreeRules')); 

it will overwrite all messages, but in the case of IS_EMPTY this is actually one message

you can try a different approach, translate by value

remove Zend_Validate_NotEmpty::IS_EMPTY => ' ',

$errors=array(
 //values
 'Value is required and cannot be empty' = > 'My translate',
 'agreeRules' => 'My rules'
);

then

$validatorNotEmpty->setMessages(array(
       Zend_Validate_NotEmpty::IS_EMPTY  => 'agreeRules'));

, "notEmpty" (Zend_Validate_NotEmpty::IS_EMPTY - ) "agreeRules"

+2

$form->formElementName->setDisableTranslator(true);

+2

Please try the method below to add an item. This will help you.

$ this-> addElement (

              'checkbox',

              'userAgreement',

               array(
        'label'      => ',     :',
        'required'   => true,
        'validators' => array(
            array('NotEmpty', true, array( 'messages' => array( Zend_Validate_NotEmpty::IS_EMPTY => 'agreeRules' ) ) ),
        )
    ));
+1
source

All Articles