如何装饰zend表单元素以将标签放在tr中,将元素放在tr
中<tr><td><label>name</label></td></tr>
<tr><td><input type="text"/></td></tr>
我使用此代码
$this->setElementDecorators(
array('ViewHelper',
array(array('data'=>'HtmlTag'),array('tag'=>'td','class'=>'element_td')),
array('Label',array('tag'=>"td")),
array(array('row'=>'HtmlTag'),array('tag'=>'tr'))
)
);
但它在同一行产生标签和元素[tr] 我想要行中的标签和另一行中的元素如何做到这一点??
答案 0 :(得分:4)
使用装饰器执行此操作有点棘手,但这是可能的。因为你想要在彼此独立的标签中包装两个单独的组件,你必须做的是首先使用HtmlTag装饰器包装其中一个,然后通过在它之后附加装饰器来构建另一个(或者可选地另一种方式)周围和前置):
$this->setElementDecorators(array(
array('Label'),
array(array('labelTd'=>'HtmlTag'),array('tag'=>'td','class'=>'label_td')),
array(array('labelTr'=>'HtmlTag'),array('tag'=>'tr','class'=>'label_tr')),
array(array('elementOpenTr'=>'HtmlTag'),array('tag'=>'tr','class'=>'element_tr','openOnly'=>true,'placement'=>'append')),
array(array('elementOpenTd'=>'HtmlTag'),array('tag'=>'td','class'=>'element_td','openOnly'=>true,'placement'=>'append')),
array('ViewHelper', array('placement' => 'append')),
array(array('elementCloseTd'=>'HtmlTag'),array('tag'=>'td','closeOnly'=>true,'placement'=>'append')),
array(array('elementCloseTr'=>'HtmlTag'),array('tag'=>'tr','closeOnly'=>true,'placement'=>'append'))
));