Как я могу использовать Zend Form Decorator для рендеринга ошибок внутри моей метки переноса тега абзаца и ввода - PullRequest
1 голос
/ 01 ноября 2011

Я хотел бы сделать следующую разметку:

<div class="row">
<p>
  <label>Your Name</label>
  <input type="text" class="text_field" name="name">
  <ul class="errors">
    <li>Waarde is vereist en kan niet leeg worden gelaten</li>
  </ul>  
</p>
</div>

Это мой элемент формы Zend + декоратор:

$this->addElement('text', 'name', array(        
            'label' => 'Naam:',
            'class' => 'text_field',
            'required' => true,
            'decorators' => array(
                'ViewHelper',
                'Label',
                'Errors',
                array(array('row' => 'HtmlTag'), array('tag' => 'p')),
                array(array('content' => 'HtmlTag'), array('tag' => 'div', 'class' => 'row'))
            )));

Но это всегда отображает список ul под тегом p, а не внутри. Он также добавляет дополнительный тег p ниже списка.

<div class="row">
  <p>
    <label class="required" for="name">Naam:</label>
    <input type="text" class="text_field" value="" id="name" name="name">
  </p>
  <ul class="errors">
    <li>Waarde is vereist en kan niet leeg worden gelaten</li>
  </ul>
  <p></p>
</div>

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Нашли это! Моя глупая ошибка. Я проверял только окончательный вывод в моем браузере. Я использую шаблон, который также загружает Javascript, и это меняет DOM, который создает нежелательный результат.

Итак, первая настройка декоратора работала правильно.

0 голосов
/ 01 ноября 2011

Попробуйте сделать следующее:

$this->addElement('text', 'name', array(        
            'label' => 'Naam:',
            'class' => 'text_field',
            'required' => true,
            'decorators' => array(
                'ViewHelper',
                'Label',
                'Errors',
                array(array('content' => 'HtmlTag'), array('tag' => 'p')),
                array(array('content' => 'HtmlTag'), array('tag' => 'div', 'class' => 'row'))
            )));
...