Zend_Form -> Nicely change setRequired() validate message

前端 未结 10 1306
死守一世寂寞
死守一世寂寞 2021-01-31 09:25

Say I create a text element like this:

$firstName = new Zend_Form_Element_Text(\'firstName\');
$firstName->setRequired(true);

Whats

相关标签:
10条回答
  • 2021-01-31 10:01

    Try

    ->addValidator('Digits', false);
    

    or

    ->addValidator('Digits');
    

    You assume that to check Digits it has to have a string length anyway.

    Also, I like to do some custom error messages like this:

    $firstName->getValidator('NotEmpty')->setMessage('Please enter your first name');
    

    This allows you to "get" the validator and then "set" properties of it.

    0 讨论(0)
  • 2021-01-31 10:05

    Try this..

    $ausPostcode = new Zend_Form_Element_Text('aus_postcode'); $ausPostcode->setLabel('Australian Postcode')
    ->setRequired(true)
    ->addValidator('StringLength', false, array(4, 4))
    ->addValidator(new Zend_Validate_Digits(), false)
    ->getValidator('digits')->setMessage('Postcode can only contain digits');
    

    This sets the custom error message only for the Digits validator.

    0 讨论(0)
  • 2021-01-31 10:14

    An easier way to set this "site-wide" would be to possibly do the following in a bootstrap or maybe a base zend_controller:

    <?php    
    $translateValidators = array(
                            Zend_Validate_NotEmpty::IS_EMPTY => 'Value must be entered',
                            Zend_Validate_Regex::NOT_MATCH => 'Invalid value entered',
                            Zend_Validate_StringLength::TOO_SHORT => 'Value cannot be less than %min% characters',
                            Zend_Validate_StringLength::TOO_LONG => 'Value cannot be longer than %max% characters',
                            Zend_Validate_EmailAddress::INVALID => 'Invalid e-mail address'
                        );
        $translator = new Zend_Translate('array', $translateValidators);
        Zend_Validate_Abstract::setDefaultTranslator($translator);
    ?>
    
    0 讨论(0)
  • 2021-01-31 10:15

    Give this a shot:

    $firstName = new Zend_Form_Element_Text('firstName');
    $firstName->setLabel('First Name')
              ->setRequired(true)
              ->addValidator('NotEmpty', true)
              ->addErrorMessage('Value is empty, but a non-empty value is required.');
    

    The key is that "true" on the validator if you set that to true, it'll kill the other validations after it. If you add more than one validation method, but set that to false, it will validate all methods.

    0 讨论(0)
  • 2021-01-31 10:15

    But try this:

    $firstName->setRequired(true)
              ->addValidator('NotEmpty', false, array('messages' => 'bar'))
              ->addValidator('Alpha', false, array('messages'=>'Must contain only letters'));
    

    If left empty and submitted, itll give two messages bar & '' is an empty string. Its that second message thats coming from setRequired(true) thats the problem

    0 讨论(0)
  • 2021-01-31 10:18

    Try the following.

    $subjectElement->setRequired(true)->addErrorMessage('Please enter a subject for your message');
    

    This worked form me.

    0 讨论(0)
提交回复
热议问题