Pracując przy ostatnim projekcie bazującym na Zend Framework 2 napotkałem dziwny błąd. Mianowicie dla pól formularza, które miały atrybut required miały ustawiony na true, nie mogłem ustawić własnego komunikatu błędu. Pomimo tego, że walidator dla tego pola ustawiony w InputFilter, wyglądał na prawidłowy, wyświetlana była domyślna wartość komunikatu błędu.

array(
  'name' => 'NotEmpty',
  'options' => array(
    'messages' => array(
      NotEmpty::IS_EMPTY => 'Pole nie może być puste',
    )
  )
),

Okazało się, że problem nie leżał w samej definicji walidatora. Po zaglądnięciu do klasy Zend\InputFilter\Input i trafieniu do metody injectNotEmptyValidator() zauważyłem następujący fragment kodu:

// Check if NotEmpty validator is already first in chain 
$validators = $chain->getValidators(); 
if (isset($validators[0]['instance']) && $validators[0]['instance'] instanceof NotEmpty ) { 

Czyli pojawiał się tutaj warunek konieczny, aby walidator NotEmpty był pierwszym zdefiniowanym w łańcuchu walidatorów.

Tak więc w przypadku pojawiania się tego problemu są dwie opcje:
1. Zdefiniować walidator NotEmpty jako pierwszy
2. Pobrać najnowszą wersję Zend Framework 2, w której bład ten został usunięty.

Zend Framework 2 – własny komunikat błędu dla walidatora NotEmpty

Leave a Reply

Your email address will not be published. Required fields are marked *

Social Widgets powered by AB-WebLog.com.