2013-09-04 2 views
0

Что я хочу сделать:Zend конкретных пользовательских сообщений об ошибках для нескольких ошибок

Добавление пользовательских ErrorMessages к моему Zend_Form_Element_Text, когда некоторые валидация неудачу. Но вот моя проблема: все, что я пробовал там, где отображаются только все пользовательские сообщения или по умолчанию. Даже первая проверка StringLength отображает только оба случая.

Короткий пример того, что я делаю:

$usernameElement = new Zend_Form_Element_Text('username', array('label' => 'Username')); 
$usernameElement->setRequired(true); 
$usernameElement->addValidator(
      new Zend_Validate_StringLength(array('min' => 3, 'max' => 32),true) 
     ); 
$usernameElement->addErrorMessages(array(
      Zend_Validate_StringLength::TOO_SHORT => 'Username is too short', 
      Zend_Validate_StringLength::TOO_LONG => 'Username is too long')); 

Я потратил болезненные количество времени на это и знаю, что это должно быть действительно глупая ошибка :(

ответ

2

Вам нужно добавить пользовательские сообщения в валидатор, а не элемент

Что-то вроде:.

$validator = new Zend_Validate_StringLength(array(
    'min' => 3, 
    'max' => 32, 
    'messages' => array(
     Zend_Validate_StringLength::TOO_SHORT => 'Username is too short', 
     Zend_Validate_StringLength::TOO_LONG => 'Username is too long', 
    ), 
)); 
$element->addValidator($validator, true); 

Для этого используются агрегированные короткие формы, которые могут использоваться при создании элемента, добавлении элемента в форму и т. Д. Но результат заключается в том, что обычно вы переопределяете сообщения валидатора на валидаторе, а не на элементе.

+1

Большое спасибо, это была моя ошибка. Теперь я использую setMessages() в валидаторе и работает как шарм – Astellu

Смежные вопросы