Как изменить тег, используемый Zend_View_Helpers_FormErrors? - PullRequest
1 голос
/ 31 января 2011

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

Я попытался загрузить декоратор Errors для элементов и вызвать setOptions () для передачи набора тегов, чтобы заменить материал ul / li, используемый Zend_Form_Decorator_FormErrors, но это не сработало = / Вместо этого Zend_Form_Decorator_Errors просто поместил параметры как пары атрибут / значение в теге ul.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Вместо расширения декоратора Errors я расширил помощник вида formErrors, заставив его принимать и обрабатывать параметры в массиве.У помощника вида formErrors есть сеттеры, позволяющие мне изменять используемые теги:

class My_View_Helper_FormErrors extends Zend_View_Helper_FormErrors
{
    public function formErrors($errors, array $options = null)
    {
      if(key_exists('htmlElementStart', $options))
      {
        $this->setElementStart($options['htmlElementStart']);
        unset($options['htmlElementStart']);
      }
      if(key_exists('htmlElementEnd', $options))
      {
        $this->setElementEnd($options['htmlElementEnd']);
        unset($options['htmlElementEnd']);
      }
      if(key_exists('htmlElementSeparator', $options))
      {
        $this->setElementSeparator($options['htmlElementSeparator']);
        unset($options['htmlElementSeparator']);
      }
      return parent::formErrors($errors, $options);
    }
}

Для передачи параметров я получил декоратор ошибок и setOptions ():

$element->getDecorator()->setOptions(
  array(
    'class' => 'error',
    'htmlElementStart' => '<p%s>',
    'htmlElementEnd' => '</p>',
    'htmlElementSeparator' => '<br/>'
  )
);

Иуказать элементам для загрузки вспомогательного пути:

$element->getView()->addHelperPath('My/View/Helper', 'My_View_Helper');
1 голос
/ 31 января 2011

К сожалению, вы не можете изменить формат вывода, просто передав несколько параметров.Если вы хотите изменить это поведение, у вас нет выбора, кроме как написать собственный декоратор ошибок (скорее всего, производный от оригинального декоратора ошибок).У этого нового декоратора должен быть перезаписан метод render (), чтобы можно было вызывать собственный помощник вида (вместо помощника formErrors, который ZF использует по умолчанию).

...