Nasıl Zend_Form regex hata iletileri özelleştirebilirsiniz?

3 Cevap php

Ben aşağıdaki kodu vardır:

    $postcode = $form->createElement('text', 'postcode');
    $postcode->setLabel('Post code:');
    $postcode->addValidator('regex', false, 
        array('/^[a-z]{1,3}[0-9]{1,3} ?[0-9]{1,3}[a-z]{1,3}$/i'));
    $postcode->addFilters(array('StringToUpper'));
    $postcode->setRequired(true);

Bu formda bir giriş alanı oluşturur ve bir regex geçerlilik kuralı ayarlar ve gayet güzel çalışıyor.

Sorun bir kullanıcı geçersiz posta kodu girdiğinde o görüntüler hata mesajı bu olduğunu:

'POSTCODE' does not match against pattern
    '/^[a-z]{1,3}[0-9]{1,3} ?[0-9]{1,3}[a-z]{1,3}$/i'

(Giriş olarak POSTA KODU)

Ben bu mesajı nasıl biraz daha samimi olmak değiştirebilirim?

3 Cevap

Ben hatırlıyorum, sen Validator hata mesajı ayarlayabilirsiniz düşünüyorum:

$postcode = $form->createElement('text', 'postcode');
$postcode->setLabel('Post code:');
$postcode->addValidator('regex', false, array(
    'pattern' => '/^[a-z]{1,3}[0-9]{1,3} ?[0-9]{1,3}[a-z]{1,3}$/i')
    'messages' => array(
        'regexInvalid'   => "Invalid type given, value should be string, integer or float",
        'regexNotMatch' => "'%value%' does not match against pattern '%pattern%'",
        'regexErrorous'  => "There was an internal error while using the pattern '%pattern%'"
    )
);
$postcode->addFilters(array('StringToUpper'));
$postcode->setRequired(true);

Bu işe yaramazsa, deneyin

  • setErrorMessages(array $messages): önceden ayarlanmış tüm hata mesajları yazılmadan, form doğrulama hataları görüntülemek için birden çok hata iletileri ekleyin.

Harici değişken kullanma gibi doğrulayıcı tanımlarsak setMessage():

$validator = new Zend_Validate_Alnum();
$validator->setMessage('My custom error message for given validation rule',
                       Zend_Validate_Alnum::INVALID);
$formElement->addValidator($validator);

Eğer formu için onaylayıcısına yukarıdaki örnekte gördüğünüz gibi Zend_Validate_ * örneklerini başka türlü farklı değildir.

Doğrulama mesajlarını kurma API Docs içine bakarak ve (ben Zend_Validate_Alnum :: GEÇERSİZ durumunda olduğu gibi) belirli bir doğrulama hata iletisi sabit dışarı bulma içerir. Mesajı sabitler gerçekten kendini açıklayıcı çoğu durumda olduğu gibi - IDE sadece yazarak iyi içerik otomatik tamamlama sağlar Tabii ki validator sınıf yeterli olabilir.

Başka bir yol Zend_Form sihirli yöntemler kullanmak olabilir ve sadece onaylayıcısına bir parametre olarak, 'mesajlarının anahtarını ileterek olacaktır:

$formElement->addValidator(array(
  'alnum', false, array('messages' => array(
     Zend_Validate_Alnum::INVALID => 'my message'
   ))
));

Bu dahili Zend_Validate_Abstract tanımlanan setMessages() yöntem tetiklemek ediyorum ve özünde Zend_Form yıllardan için tanımlanan bir short-cut/time-saver.

NB: doğrulama mesajları hakkında ZF kılavuzunda bir dedicated section var.

Sen orijinal Zend posta kodu validator kullanabilirsiniz

$user->addElement('text', 'postcode', array('label' => 'Postcode *',
    'required' => true,        
    'class' => 'postcode_anywhere',
    "validators" => array(
        array("NotEmpty", false, array("messages" => array("isEmpty" => "Required *"),)),
        array('PostCode', false, array('locale' => 'en_GB')
        )
    ),
    'filters' => array(array('StringToUpper')),
    'class' => 'text'
        )
);