Witam. Pewnie sprawa jest banalna, ale proszę o pomoc, utknąłem i nie mogę sobie poradzić. Mam w formularzu dwa inputy, które chciałbym wrzucić w tabelę:
$e1 = new Zend_Form_Element_Text('e1');
$e1
->setName('e')
->setAttrib('id', 'e1')
'decorator' => array('table' => 'HtmlTag'), 'options' => array('tag' => 'table', 'openOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::PREPEND) )
,
'decorator' => array('td' => 'HtmlTag'), 'options' => array('tag' => 'td') )
,
'decorator' => array('tr' => 'HtmlTag'), 'options' => array('tag' => 'tr', 'openOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::PREPEND)) )
);
$this->addElement($e1);
$e2 = new Zend_Form_Element_Text('e2');
$e2
->setName('e2')
->setAttrib('id', 'e2')
'decorator' => array('table' => 'HtmlTag'), 'options' => array('tag' => 'table', 'closeOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::APPEND) )
,
'decorator' => array('td' => 'HtmlTag'), 'options' => array('tag' => 'td') )
,
'decorator' => array('tr' => 'HtmlTag'), 'options' => array('tag' => 'tr', 'closeOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::APPEND)) )
);
$this->addElement($e2);
Efekt:
<input type="text" name="e1" id="e1" value=""/></dd></td> <td><dt id="e1-label"> </dt>
Jak zrobić, żeby tagi <table></table> były we właściwych miejscach, czyli jedyny pożądany efekt, to:
<input type="text" name="e1" id="e1" value=""/></dd></td> <td><dt id="e1-label"> </dt>
?
Dodam, że jeżeli zmienię kolejność dekoratorów w ten sposób:
$e1 = new Zend_Form_Element_Text('e1');
$e1
->setName('e')
->setAttrib('id', 'e1')
'decorator' => array('td' => 'HtmlTag'), 'options' => array('tag' => 'td') )
,
'decorator' => array('tr' => 'HtmlTag'), 'options' => array('tag' => 'tr', 'openOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::PREPEND)) )
,
'decorator' => array('table' => 'HtmlTag'), 'options' => array('tag' => 'table', 'openOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::PREPEND) )
);
$this->addElement($e1);
$e2 = new Zend_Form_Element_Text('e2');
$e2
->setName('e2')
->setAttrib('id', 'e2')
'decorator' => array('td' => 'HtmlTag'), 'options' => array('tag' => 'td') )
,
'decorator' => array('tr' => 'HtmlTag'), 'options' => array('tag' => 'tr', 'closeOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::APPEND)) )
,
'decorator' => array('table' => 'HtmlTag'), 'options' => array('tag' => 'table', 'closeOnly' => true, 'placement' => Zend_Form_Decorator_Abstract
::APPEND) )
);
$this->addElement($e2);
to w ogóle <table> i </table> się nie pojawią. Co robię źle ?
Właściwie chodzi mi o objęcie tabelą pewnej grupy elementów, która jest już objęta divem:
$step4 = array('el1', 'el2', 'el3', 'el4');
$add_form->addDisplayGroup($step4, 'step4');
$add_form->getDisplayGroup('step4')->addDecorator('HtmlTag', array('tag' => 'div', 'id'=>'step4'));
Próbowałem tak:
$add_form->getDisplayGroup('step4')->setDecorators(
'FormElements',
'Form'
)
);
Niestety tabela nadpisuje tag <div>. Próbowałem tak:
$add_form->getDisplayGroup('step4')->addDecorators(array('tag' => 'div', 'id'=>'step4'), array('HtmlTag', array('tag' => 'table')));
i...
Cytat
Warning: Exception caught by form: Plugin by name 'Div' was not found in the registry;
Powyższy problem dotyczy formularza wymienionego
w tym temacieanyone
ROZWIĄZANE - hidden i label z wyłączonym dekoratorem escape
Nie pomagam na pw, tylko forum.