Я боюсь, что, хотя декораторам скучно изучать и понимать, как только вы их понимаете, они полезны
это один из моих классов, вы можете легко адаптировать его для своих нужд
<?php
class My_Label extends Zend_Form_Decorator_Abstract
{
protected $_format = '<td class="nome_campo"><label for="%s">%s%s</label></td>';
public function render($content)
{
$element = $this->getElement();
$id = htmlentities($element->getId(), ENT_QUOTES, "UTF-8");
$label = htmlentities($element->getLabel(), ENT_QUOTES, "UTF-8");
if ($element->isRequired())
$asterisk = '<span class="required">*</span> ';
else
$asterisk = '';
$markup = sprintf($this->_format, $id, $asterisk, $label);
//per avere valid xhtml/html
if (stripos($element->getType(), 'radio') !== false )//Zend_Form_Element_Radio
{
$this->_format = '<td class="nome_campo">%s%s</td>';
$markup = sprintf($this->_format, $asterisk, $label);
}
$placement = $this->getPlacement();
$separator = $this->getSeparator();
switch ($placement) {
case self::APPEND:
return $content . $separator . $markup;
case self::PREPEND:
default:
return $markup . $separator . $content;
}
}
}