Zend_Form_Element_Select kullanırken inarray onaylayıcısı Erişim özel hata iletileri

2 Cevap php

(Biz> ZF1.62 destekleyecek bir hgih yeterli PHP sürümü yok, bir Red Hat örnek için bitmiş ürün dağıtma becuase) Ben Zend Framework 1.62 kullanıyorum.

When creating a Form using Zend Form, I add a select element, add some multi options. I use the Zend Form as an in-object validation layer, passing an objects values through it and using the isValid method to determine if all the values fall within normal parameters.

Zend_Form_Element_Select başka değer ben katma çoklu seçim seçeneklerden biri dışındaki giriş ise geçersiz gösteren, tam beklendiği gibi çalışır.

Sorun noktada formunu görüntülemek istediğinizde, ben ZF tarafından otomatik olarak eklenen 'inarray' doğrulayıcı kayıtlı öncesi tarafından oluşturulan hata mesajı düzenlemek olamaz geliyor. Ben bu davranışı devre dışı biliyorum, ama bu hata iletileri dışında harika çalışıyor. Ben aşağıdaki tryed ettik:

$this->getElement('country')->getValidator('InArray')->setMessage('The country is not in the approved lists of countries');

// Doesn't work at all.

$this->getElement('country')->setErrorMessage('The country is not in the approved lists of countries');

/ / Uygulamasında Elswhere bir çatışma nedenleri ve hata mesajları taneli kontrol izin vermez.

Herkes herhangi bir fikir var mı?

Ben

2 Cevap

Ben genellikle aşağıda benim örnek olarak başına doğrulayıcılar ayarlayın:

$this->addElement('text', 'employee_email', array(
            'filters'    => array('StringTrim'),
            'validators' => array(                
                array('Db_NoRecordExists', false, array(
                    'employees',
                    'employee_email',
                    'messages' => array(Zend_Validate_Db_Abstract::ERROR_RECORD_FOUND => 'A user with email address %value% already exists')
                ))
            ),
            'label'     => 'Email address',
            'required'  => true,
            ));

Eleman seçenekleri validators dizi validator adı (string) veya bir dizi alabilir.

Bir dizi geçirildiğinde, ilk değer adı ve üçüncü validator için seçenekleri bir dizidir. Seçeneklerin bu dizide senin eleman için özel mesajları ile önemli mesajları belirtebilirsiniz.

Biri mevcut olmadığı takdirde Zend_Form_Element_Select (veya Multi alt sınıflarından birini) kullanılarak, doğrulama üzerinde inarray validator sadece otomatik olarak eklenecektir eğer.

Sen kadar bir doğrulayıcı ayarlayabilirsiniz:

$options = array(...);
$this->addElement('select', 'agree', array(
    'validators' => array(
        array('InArray', true, array(
            'messages' => array(
                Zend_Validate_InArray::NOT_IN_ARRAY => 'Custom message here',
             ),
             'haystack' => array_keys($options),
        )),
    'multiOptions' => $options,
));

ve ardından doğrulayıcı yerine otomatik olarak ekli biri kullanılacaktır.