views:

146

answers:

2

I need change all standart error message on my message in Zend_Element_Text when i use validator('EmailAddress') this validator trows several differnt message.

  • Value is required and can't be empty
  • '' is no valid email address in the basic format local-part@hostname

When i set options setErrorMessage('some my error text') it string shows on any error several times.

the error looks like

  • some my error text
  • some my error text

What the best way to solve this problem ?zf version 1.10.3

+2  A: 

The following should cover all error messages for Zend_Validate_EmailAddress

$emailValidator = new Zend_Validate_EmailAddress();
$emailValidator->setMessages(
    array(
        Zend_Validate_EmailAddress::INVALID => 'Please enter in a valid email address in the format [email protected]',
        Zend_Validate_EmailAddress::INVALID_FORMAT => 'Error with format',
        Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Error with hostname',
        Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Error with Local Part',
        Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Error with MX record',
        Zend_Validate_EmailAddress::INVALID_SEGMENT => 'Error with Segment'
    )
);

Try using that and see if those error messages show. Hopefully you can customise those and get the correct validation messages showing.

Alistair
Thanks Alistair your advice prompted me http://framework.zend.com/apidoc/1.10/ where i find all possible const.
Alexandr
A: 

@Alistair, not work your suggesion here.

// Email
  $email = new Zend_Form_Element_Text('email');

  $notempty = new Zend_Validate_NotEmpty();
  $email_validate = new Zend_Validate_EmailAddress();
  $email_validate->setMessages(
      array(
          Zend_Validate_EmailAddress::INVALID => 'Please enter in a valid email address in the format [email protected]',
          Zend_Validate_EmailAddress::INVALID_FORMAT => 'Error with format',
          Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Error with hostname',
          Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Error with Local Part',
          Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Error with MX record',
          Zend_Validate_EmailAddress::INVALID_SEGMENT => 'Error with Segment'
      )
  );

  $email->addValidator($notempty , true, $email_validate)
        ->setRequired(false);
  // Submit
  $submit = new Zend_Form_Element_Submit('submit');
Stackfan
If you add several validators you must use $email->addValidators(array(objects implements "Zend_Validate_Interface")) or if you use addValidator you must added one validator
Alexandr