Zend_Form ->

10 Cevap php

Ben bu gibi bir metin öğesi oluşturmak Say:

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

Whats the best way to change the default error message from:

Value is empty, but a non-empty value is required

Bir özel iletiye? Ben sadece bu gibi addValidator (..., instead (NO setRequired), kullanmak, mesajı yerine bir yerde okumak:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->addValidator('NotEmpty', false, array('messages'=>'Cannot be empty'));

ama benim test, bu işe yaramazsa - Aynı anda it will pass with an empty text field. ikisi (addValidator ('NotEmp .. + setRequired (true)) kullanarak {[(1) - tüm doğrulamaz ]}, two hata mesajları veriyor.

Herhangi bir fikir?

Teşekkürler!

10 Cevap

Bunu ayarlamak için daha kolay bir yol "site-wide" muhtemelen bir bootstrap ya da belki bir taban zend_controller aşağıdaki yapmak olacaktır:

<?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);
?>

Bu bir çekim verin:

$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.');

Anahtar true olduğunu ayarlanırsa onaylayıcısı üzerinde "gerçek", ondan sonra diğer doğrulamaları öldürecek olmasıdır. Birden fazla doğrulama yöntemi eklemek, ancak false, tüm yöntemleri doğrulamak edeceğini ayarlayın.

Denemek

->addValidator('Digits', false);

veya

->addValidator('Digits');

Bunu Basamakları kontrol etmek için yine bir dizi uzunluğu sahip olması gerekir varsayalım.

Also, I like to do some custom errveyamessages like this:

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

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

) (Zend_Form 'isEmpty' olarak gereken doğrulama hatası ayarlar, böylece setErrorMessages kullanarak mesaj kılabilirsiniz. Örneğin:

//Your Required Element
$element->setRequired(true)->setErrorMessages(array(
'isEmpty'=>'Please fill this field'
));

Bu ZF 1.11 kullanarak, benim için çalıştı

Aşağıdakileri deneyin.

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

Bu beni formu çalıştı.

Eğer koyarsanız:

$element->setRequired(false);

doğrulamaları hiç çalışmıyor, değil mi tanımlamak gerekir:

$element->setAllowEmpty(false);

doğrulamaları doğru davranış almak için.

Bu deneyin ..

$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');

Bu yalnızca Rakamlar onaylayıcısı için özel hata mesajı belirler.

Bir küçük sorun. Bu kod:

$zipCode->setLabel('Postal Code')
    	->addValidator('StringLength', true, array( 5, 5 ) )
    	->addErrorMessage('More than 5')
    	->addValidator('Digits', true)
    	->addErrorMessage('Not a digit');

Ya doğrulama başarısız olursa hem hata iletileri oluşturur. İlk başarısız sonra durdurmak gerekiyordu değil mi?

Ancak bu deneyin:

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

Boş bıraktı ve teslim ederse, itll iki mesaj bar vermek & '' is an empty string. Onun bu ikinci mesajı (true) setRequired gelen thats, şu sorunu

zend_validate.php adlı bir zend çevirmen kullanmak

ZendFramework-1.11.3\resources\languages\en\Zend_Validate.php and then modify this file how you need

ve daha sonra ihtiyaçlarınıza göre değiştirebilirsiniz