Zend framework zend framework创建空的显示组,然后添加元素
是否可以创建一个空的显示组,然后添加元素 我试过:Zend framework zend framework创建空的显示组,然后添加元素,zend-framework,zend-form,zend-form-element,Zend Framework,Zend Form,Zend Form Element,是否可以创建一个空的显示组,然后添加元素 我试过: addDisplayGroup(null, 'exampleGroup') 但你必须至少传递一个元素 我只需要创建一个空的显示组 我需要这样做,因为在创建显示组之后,我将在foreach中逐个添加元素 再次感谢…您可以尝试使用 $form->addDisplayGroup(array(), 'exampleGroup'); 然后获得如下显示组: $displayGroup = $form->getDisplayGroup('ex
addDisplayGroup(null, 'exampleGroup')
但你必须至少传递一个元素
我只需要创建一个空的显示组
我需要这样做,因为在创建显示组之后,我将在foreach中逐个添加元素
再次感谢…您可以尝试使用
$form->addDisplayGroup(array(), 'exampleGroup');
然后获得如下显示组:
$displayGroup = $form->getDisplayGroup('exampleGroup');
然后使用$displayGroup->addElement()
或$displayGroup->createElement()
逐个添加元素
您可以在中看到更多详细信息
编辑:
ZF不允许添加没有元素的显示组。最简单的解决方案可能是首先创建元素,将它们放入数组,然后将该数组传递给addDisplayGroup
也可以实例化一个新的Zend\u Form\u DisplayGroup
对象,然后使用$Form->addDisplayGroups(array($group))
将其添加到表单中,但我怀疑这是否比使用已创建的元素调用addDisplayGroup()
更方便
希望这有帮助,重写表单的
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
我的解决方案:
$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);
}
只需在foreach期间将元素放入数组中,然后将其传递给->addDisplayGroupHi Max,是的,最后我这样做了。。。我想到了。。。我只是想换一种方式,因为代码看起来更容易理解。。。不管怎样都可以。。。再次感谢你的回答,迪诺普米。。。我在你之前试过了,但没用。。。它返回一个异常:没有为显示组指定有效的元素。在这种情况下,正如@max4ever在其注释中所指出的,只需先创建元素并在它们准备好后调用addDisplayGroup就更容易了。。。