2010-11-30 46 views
0

我正在使用DisplayGroup渲染组中的几个元素。现在我想要做的是在一个表格行中渲染这个组。但事实证明,DisplayGroups上的装饰器的功能不是而是的工作方式与他们在简单元素上的工作方式相同。举个例子:Zend Framework中的DisplayGroup装饰器

$content = $this->getDisplayGroup('group'); 
$content->setDecorators(array(
     'FormElements', 
     array('HtmlTag', array('tag' => 'table', 'class' => 'element')), 
     )); 

这只是把 <table></table>在我的显示组结束。我也试着给他们别名:

array(array('elementDiv' => 'HtmlTag'), array('tag' => 'table')), 
'FormElements', 
array(array('td' => 'HtmlTag'), array('tag' => 'table')), 

仍然使他们在一个地方,没有用尽全力openOnlycloseOnly

array(array('elementDiv' => 'HtmlTag'), array('tag' => 'table','openOnly'=>true)), 
'FormElements', 
array(array('td' => 'HtmlTag'), array('tag' => 'table','closeOnly'=>true)), 

它仍然只在结束标记放。如果我将这些更改为<td>,一切正常,但不是<table>我错过了什么?

+1

`HtmlTag`修饰符不区分标签,所以它应该工作正常。当你说它把表标签放在你的显示组的最后,那是在实际的渲染源? – Phil 2010-12-01 03:56:06

回答

0

因此,jah是正确的,并且表格没有被添加是源观众的一个错误。

$group->setDecorators(array(

      'FormElements', 
     array('Description', array('escape' => false, 'tag' => false)), 
     array('HtmlTag', array('tag' => 'table', 'class' => 'element')), 
)); 

这对我来说是诀窍。不是很确定Description Decorator是干什么的,但表格根据需要呈现。