2010-01-14 4 views
1

Я изменил декоратор:Как удалить сообщения об ошибках формы Zend?

private function _addErrorDecorator($form) 
{ 
    $form->setDecorators(array(
     'FormElements', 
     new Zend_Form_Decorator_FormErrors(array 
      (
       'ignoreSubForms' => true, 
       'markupElementLabelEnd' => '</b>', 
       'markupElementLabelStart' => '<b>', 
       'markupListEnd' => '</div>', 
       'markupListItemEnd' => '</span>', 
       'markupListItemStart' => '<span>', 
       'markupListStart' => '<div id="Form_Errors">' 
      ) 
     ), 
     'Form' 
    )); 
    return $form; 
} 

Но теперь мне нужно, чтобы удалить сообщения об ошибках в соответствии с полями формы. Как это сделать?

ответ

4

Каждый элемент, субформа и группа отображения в вашей форме также имеет стек декоратора, поэтому вам нужно будет изменить стек для элементов, которые вы хотите не отображать сообщения об ошибках.

Там много способов сделать это:

$form->setElementDecorators(array(
    'ViewHelper', 
    'HtmlTag', 
    'Label' 
)); 

ли способ пойти, если вы хотите сохранить стек декоратора элемент по умолчанию, но с декоратором ошибки удалены. Вы также можете сделать это на индивидуальной основе элемента:

$element->setDecorators(array(
    'ViewHelper', 
    'HtmlTag', 
    'Label' 
)); 

Или, когда вы добавляете элемент:

$form->addElement($type, $name, array(
    'decorators' => $decorators 
)) 
+0

Спасибо и как отобразить все сообщения об ошибках, помимо формы? Currenly они внизу. Я мог бы исправить это через css, но это неправильно. :) – Somebody

+0

Я имею в виду, как установить что-то вроде setPosition для всех ошибок или er даже обертка ошибок. Я нашел только getPosition. И обнаружили, что есть только две опции Prepend и Append, но как их установить я не нашел. – Somebody

+0

Вы можете попробовать добавить 'position' => 'append' в свой 'новый массив Zend_Form_Decorator_FormErrors'. – Johrn

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