Ну, 2012 год и все та же проблема. Если вы удалите декораторы, HTML не будет проверяться. Если вы их оставите, скрытые элементы займут место. Во всех моих проектах у меня есть помощник CSS .hidden, поэтому я просто применяю его к <dd>
и убираю метку:
$element = new Zend_Form_Element_Hidden('foo', array('value' => 'bar'));
$element->removeDecorator('Label');
$element->getDecorator('HtmlTag')->setOption('class', 'hidden');
Действительный HTML (5), красивые формы. Это также может войти в пользовательский декоратор для скрытых полей.
EDIT
Вот как я поместил его в свой собственный элемент формы:
class Exanto_Form_Element_Hidden extends Zend_Form_Element_Hidden
{
public function render(Zend_View_Interface $view = null)
{
$this->removeDecorator('Label');
$this->getDecorator('HtmlTag')->setOption('class', 'hidden');
return parent::render($view);
}
}