我有Zend装饰器的问题。我试着找到一个简单的列表。
<ul class="gallery" id="gallery">
<li><img src="image1" /></li>
<li><img src="image2" /></li>
</ul>
我动态创建图像列表。
foreach ($imageData as $fileData)
{
$filename = 'image'.$counter;
$form->addElement('note',$filename);
$form->getElement($filename)->setValue('<img src="/img/'.$fileData.'">')
->addDecorator('Label')
->addDecorator('Errors')
->addDecorator('HtmlTag', array('tag' => 'li'))
->addDecorator(array('ulTag'=>'HtmlTag'), array('tag'=>'ul','id' =>'gallery'))
$counter++;
}
不幸的是我得到了:
<ul class="gallery" id="gallery">
<li><img src="image1" /></li>
</ul>
<ul class="gallery" id="gallery">
<li><img src="image2" /></li>
</ul>
我不明白,我如何更改装饰器,将所有图像放入1个列表而不是多个ul标签。任何人都可以给我一个建议吗?非常感谢提前!
答案 0 :(得分:0)
您可以使用display groups对元素进行分组,然后将ulTag装饰器添加到组中,而不是单个元素。
以下代码应大致为您所需:
foreach ($imageData as $fileData)
{
$filename = 'image'.$counter;
$images[] = $filename;
$form->addElement('note',$filename);
$form->getElement($filename)->setValue('<img src="/img/'.$fileData.'">')
->addDecorator('Label')
->addDecorator('Errors')
->addDecorator('HtmlTag', array('tag' => 'li'))
$counter++;
}
$form->addDisplayGroup(
$images,
'images',
array('disableLoadDefaultDecorators' => true)
);
$form->images
->addDecorator(array('ulTag'=>'HtmlTag'), array('tag'=>'ul','id' =>'gallery'))