Zend_Validate_Between garip hata mesajı

2 Cevap php

Ben Zend_Validate_Between sınıfı ile deney yaşıyorum.

Ben bu suretle kurmak:

$scoreBetweenValidator = new Zend_Validate_Between(-3, 3, true);

bu yüzden validator sadece -3 ve 3, kapsayıcı arasındaki değerleri kabul etmelidir.

Geçersiz bir değer ben Zend_Validate_InArray class (Zend_Validate_InArray :: NOT_IN_ARRAY) ait düşünüyorum '%value%' was not found in the haystack hata mesajı aldık.

Benim sorunum setMessages yöntemi ile özel hata iletileri kullanmak isteyen, ama ben bu görünüşte yabancı mesajı anahtarının kurmak olabilir bilmiyorum olmasıdır.

Ben bu çalıştı:

$scoreBetweenValidator->setMessages(array(
		Zend_Validate_Between::NOT_BETWEEN_STRICT => 'my custom msg',
		Zend_Validate_Between::NOT_BETWEEN => 'my other custom msg',
    		//'notInArray' => "doesn't work"
    		//Zend_Validate_InArray::NOT_IN_ARRAY => "also doesn't work"
	));

ama No message template exists for key 'notInArray' durum var.

Zend Framework özel doğrulama iletileri ayarı için tercih edilen çözüm nedir?

As a reply to Jason:

A Zend_Form_Element_Select addElements yöntemi ile bağlı bir Zend_Form sınıf içinde.

Form herhangi başka elementler sadece bu bir yok, ve sadece arasında, başka herhangi bir doğrulayıcılar yoktur.

En seçenekleri seçin, varsayılan olarak tüm geçerlidir, ama ben (Kundakçı ile) seçenek değerini çimdik ve (self-hack girişimi gibi) geçersiz bir değer ayarlamak zaman notInArray durum alırsınız.

2 Cevap

Zend_Form_Element_Select otomatik olarak kendisi için bir inarray validator ekler.

Bunun için hata mesajı ayarlamak için, bu hile yapmak gerekir:

$element->getValidator('InArray')->setMessage('Your inArray error message here', Zend_Validate_InArray::NOT_IN_ARRAY);

Eğer tüm inarray onaylayıcıyı istemiyorsanız, size öğe üzerinde setRegisterInArrayValidator(false) arayarak, veya eleman yaratılış registerInArrayValidator yapılandırma anahtarının yanlış geçerek ya bu davranışı devre dışı bırakabilirsiniz.

Ben bu yüzden Zend \ Validate \ EmailAddress.php mesajları değişti newbee duyuyorum. Onun e-posta afterall