2013-07-15 1 views
2

У меня есть текстовый элемент Zend, который содержит HTML в метке. Я могу остановить Zend от экранирования HTML там, добавив опцию ->setOption('escape', false);. Это работает так, как ожидалось.Стоп Zend Элемент элемента формы из экранирования HTML

Однако, при возникновении ошибки, ошибка показывает метку HTML, экранированную как заголовок сообщения об ошибке. Я получаю то, что выглядит следующим образом:

<strong>First</strong> name 
Please enter your first name 

Я имею в виду несколько способов я могу обойти это, но не уверен, что если либо возможно. Могу ли я изменить формат ошибки, чтобы он не использовал входную метку напрямую? Или есть способ остановить Zend от экранирования HTML в ошибках?

Редактировать: Я не показываю каждую ошибку ввода рядом с входом. Вместо этого я группирую все ошибки и отображаю их сразу. Каждый элемент декоратор ошибки удалены:

$firstName->removeDecorator('Errors'); 

А потом я отображая их как группу, добавив FormErrors декоратора:

$myForm->setDecorators(array('FormErrors', ....)); 

Я думаю, что это то, что вызывает ярлык на входе в показать как часть списка ошибок.

+0

Что генерирует сообщение об ошибке? По крайней мере, в ZF1 декодер сообщений об ошибках по умолчанию не включает метку в качестве заголовка ошибки. – Divey

+0

@ Divey Спасибо Divey, я обновил свой вопрос до того, что я должен был написать в первую очередь. Я группирую ошибки с помощью декоратора формы FormErrors, поэтому я думаю, что это то, что показывает метки как названия? – dKen

ответ

0

Если вы используете FormErrors декоратора, то у вас есть два варианта, как остановить побег этикетки:

Первый вариант: Указать другой Zend_View побег обратного вызова с помощью Zend_View::setEscape методу Второй вариант: Создание пользовательских FormErrors декоратора и переопределение renderLabel способ.

Пример:

class My_Form_Decorator_FormErrors extends Zend_Form_Decorator_FormErrors 
{ 
    public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view) 
    { 
     return $this->getMarkupElementLabelStart() 
      . $element->getLabel() 
      . $this->getMarkupElementLabelEnd(); 
    }  
} 

class Forms_Example extends Zend_Form 
{ 
    public function init() 
    { 
     /* ... */ 
     $this->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator', 'decorator'); 
     /* ... */ 
    } 
} 

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

  • Нет связанных вопросов^_^