Zend Framework: нужна помощь с декораторами форм
Я новичок в разработке в Zend Framework. Я провел некоторые исследования по поводу декораторов форм, но я хочу кое-что конкретное.
Это то, что я хочу:
<table>
<tr>
<td colspan="2">
<ul class="errors">
<li>error</li>
</ul>
</td>
</tr>
<tr>
<td>Label :</td>
<td>input field</td>
</tr>
<tr>
<td></td>
<td>Submit Button</td>
</tr>
</table>
Что у меня есть это:
$this->setElementDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
$submit->setDecorators(array('ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array(array('emptyrow' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element', 'placement' => 'PREPEND')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
$this->setDecorators(array(
'FormElements',
'Errors'
array('HtmlTag', array('tag' => 'table')),
'Form'
));
но он приходит с предупреждением htmlspecialchar, и ul пуст.
есть ли возможность это исправить?
1 ответ
Решение
Ошибки валидации связаны с отдельными входами, а не с формой, поэтому я полагаю, что вам может быть трудно заставить это работать, используя только декораторы.
Я бы просто отобразил отдельные элементы формы вместе с ошибками валидации отдельно в скрипте вида. Вам нужно подготовить ошибки к отображению самостоятельно и вообще избавиться от декораторов, придерживаясь только ViewHelper. Тогда вы можете сделать это:
<form method="post">
<table>
<tr>
<td colspan="2"><?php echo $this->errors; ?></td>
</tr>
<tr>
<td><?php echo $this->form->foo->getLabel(); ?></td>
<td><?php echo $this->form->foo; ?></dt>
</tr>
</table>
</form>