Witam
W projekcie mam kilka formularzy zrobionych mniej więcej tak:
class Moja_Forma extends Moj_Decorator
{
protected function _formA()
{
$form = new Moj_DecoratorSub();
$element = new Zend_Form_Element...
$form->addElements($element1, $element2);
return $form;
}
public function init()
{
$this->addSubForm('formA', $this->_formA());
$this->addSubForm('formB', $this->_formB());
}
}
Z powodu layoutu muszę wyświetlać formy w specyficzny sposób:
<?php echo $this->form->getSubForm('formA'); ?>
...
...
....
<?php echo $this->form->getSubForm('formB'); ?>
Przy wyświetlaniu jednak ignoruje moje dekoratory - wyświetla <dl><dt>.
Widzicie może gdzie popełniłem błąd ?
Przy normalnym pokazywaniu formularzy
Wszystko jest ok (dla formularzy bez SubForm)
Dekoratory:
class Moj_Decorator extends ZendX_JQuery_Form
{
/**
* Load the default decorators
*
* @return void
*/
public function loadDefaultDecorators()
{
$this->clearDecorators();
$this->addDecorator('FormElements')
->addDecorator('HtmlTag', array('tag' => '<ul>')) ->addDecorator('Form');
$this->setElementDecorators(array( array('UiWidgetElement'), array('HtmlTag', array('tag' => 'li', 'class'=>'element-group')), ));
}
}
class Moj_DecoratorSub extends Moj_Decorator
{
/**
* Whether or not form elements are members of an array
* @var bool
*/
protected $_isArray = true;
/**
* Load the default decorators
*
* @return void
*/
public function loadDefaultDecorators()
{
$this->clearDecorators();
$this->addDecorator('FormElements')
->addDecorator('HtmlTag', array('tag' => '<ul>')) ->addDecorator('Fieldset');
$this->setElementDecorators(array( array('UiWidgetElement'), array('HtmlTag', array('tag' => 'li', 'class'=>'element-group')), ));
}
}