Zend Framework: gerekli bir Zend_Form_Element form alanını, nasıl validator eleman boş olmadığından emin olmak için kullanılan değiştiririm ayarı

5 Cevap php

Kullanırken bir Zend_Form, bir giriş boş kalmaması doğrulamak için tek yol yapmaktır

$element->setRequired(true);

Bu set ve eleman boş değilse, bu doğrulama eleman çalıştırmak olmadığını bana görünür.

I setRequired() kullanırsanız, element otomatik standart NotEmpty onaylayıcıyı verilir. Şey bu denetleyici ile hata iletisi "Değer boş, ama bir boş olmayan değer gereklidir", berbat olmasıdır. Ben bu mesajı değiştirmek istiyorum. Şu anda ben Zend_Validate_NotEmpty sınıfını değiştirerek bunu yaptım, ama bu biraz hacky olduğunu.

Ben ideal boş değil denetimi gerçekleştirmek için (Zend_Validate_NotEmpty türetilmiş) benim kendi sınıfını kullanmak mümkün olmak istiyorum.

5 Cevap

Ben bu şekilde (ZF 1.5) yaptım:

$name = new Zend_Form_Element_Text('name');
$name->setLabel('Full Name: ')
     ->setRequired(true)
     ->addFilter('StripTags')
     ->addFilter('StringTrim')
     ->addValidator($MyNotEmpty);

böylece, addValidator () ilginç bir parçasıdır. Mesaj, bir "errorMessage File" (tek bir dosyada tüm özel mesajlar paket için) ayarlanır:

$MyNotEmpty = new Zend_Validate_NotEmpty();
$MyNotEmpty->setMessage($trans->translate('err.IS_EMPTY'),Zend_Validate_NotEmpty::IS_EMPTY);

Bu yardımcı olur umarım ...

Varsayılan olarak, (true) setRequired bir NonEmpty doğrulama eklemek için () isValid söyler if one doesn't already exist. Bu doğrulama () denir isValid kadar mevcut olmadığından, sen mesajı ayarlanamaz.

Kolay çözüm sadece manuel () denir isValid önce NonEmpty doğrulama eklemek ve buna göre mesajdır ayarlamaktır.

$username = new Zend_Form_Element_Text('username');
$username->setRequired(true)
         ->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));

Bir NotEmpty doğrulayıcı ekleyin ve kendi mesajınızı ekleyebilirsiniz:

// In the form class:
$username = $this->createElement('text', 'username');
$username->setRequired();  // Note that this seems to be required!
$username->addValidator('NotEmpty', true, array(
    'messages' => array(
        'isEmpty' => 'my localized err msg')));

Note ayrıca setRequired () aradım sürece NotEmpty validator elemanı tetiklenir gibi görünmüyor.

Denetleyiciye (veya her yerde), bu sayfanın basılı olduğunda hata mesajı lokalize $ form-> setTranslator ($ yourTranslator) diyoruz.

error message olarak değiştirin.

Bildiğim kadarıyla ben gördüğünüz gibi Changing the error message, belirli bir hata mesajı değişen hiçbir yolu vardır. Artı manuel bu Zend_Form ait bir fonksiyon gibi gibi yapar, ama yöntemi Zend_Form bir örneği üzerinde kullanırken bulunamadı olsun.

Ve kullanımın örnek gerçekten harika olurdu.