是否可以创建一个空的显示组,然后添加元素?
我试过了:
addDisplayGroup(null, 'exampleGroup')
但你必须传递至少一个元素......
我需要创建一个空的显示组。
我需要这样做,因为在创建显示组之后,我将在foreach中逐个添加元素....
再次感谢...
答案 0 :(得分:2)
您可以尝试使用
$form->addDisplayGroup(array(), 'exampleGroup');
然后得到那样的显示组:
$displayGroup = $form->getDisplayGroup('exampleGroup');
稍后使用$displayGroup->addElement()
或$displayGroup->createElement()
逐个添加元素。
您可以在Display Groups documentation。
中查看更多详情修改强>:
ZF不允许添加没有元素的显示组。最简单的解决方案可能是首先创建元素,将它们放入数组中,然后将该数组传递给addDisplayGroup
。
也可以实例化一个新的Zend_Form_DisplayGroup
对象,然后使用$form->addDisplayGroups(array($group))
将其添加到表单中,但我怀疑它是否比使用已创建的元素调用addDisplayGroup()
更方便。
希望有所帮助,
答案 1 :(得分:1)
如何覆盖表单的addDisplayGroup($elements, $name)
方法,必要时添加虚拟元素:
class My_Form extends Zend_Form
{
protected $dummyName = '_myDummy';
public function addDisplayGroup(array $elements, $name)
{
if (count($elements) == 0){
$elt = new Zend_Form_Element_Hidden($this->dummyName);
$elt->setIgnore(true);
$elements[] = $this->dummyName;
}
return parent::addDisplayGroup($elements, $name);
}
public function render(Zend_View_Interface $view = null)
{
$this->removeElement($this->dummyName);
return parent::render($view);
}
}
然后在您的表单中,您现在可以调用:
$displayGroup = $this->addDisplayGroup(array(), 'myDisplayGroup');
$elt1 = new Zend_Form_Element_Text('myElement1');
$displayGroup->addElement($elt1);
$elt2 = new Zend_Form_Element_Text('myElement2');
$displayGroup->addElement($elt2);
// etc
答案 2 :(得分:0)
我的解决方案:
$zgody = $db->fetchAll($db->select()->from('rodo_regulki')->where( 'id_inwest =?', $inwest ));
$getFirstElement = $zgody[0]->id;
$this->addDisplayGroup(array('zgoda_'.$getFirstElement),'zgody', array('legend' => 'Zgody'));
foreach($zgody as $zgoda) {
$element = 'zgoda_'.$zgoda->id;
$addElement = $this->getElement($element);
$displayGroup = $this->getDisplayGroup('zgody');
$displayGroup->addElement($addElement);
}