在我的控制器中,我得到了一个如下所示的函数:
public function newExperienceAction() {
$this->_helper->layout->disableLayout();
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('newExperience', 'html')->initContext();
$id = $this->_getParam('id', null);
$this->form = new Application_Form_Cv();
$this->experience = new Zend_Form_SubForm();
$this->form->addSubForm($this->experience, 'experience');
$rowExperience = new Application_Form_Experience();
$rowExperience->setDisplayGroups('experience');
$this->experience->addSubForm($rowExperience, "experience$id", $id+3);
echo $rowExperience->__toString();
}
当用户在表单上按(+)时,将显示一个新的子窗体。
我现在正在将其塑造成一张桌子。我将在此表单上有多个subForm,因此我需要使用DisplayGroups。
在这种情况下,我认为我必须在首次创建表单时创建一个显示组。
然后我需要将新的子表单附加到现有的显示组。
所以问题是:
如何将新的子表单添加到现有的显示组?
答案 0 :(得分:1)
我担心现在不可能。我正在使用Zend Framework版本1.11.7,addDisplayGroup
方法的代码如下所示:
foreach ($elements as $element) {
if($element instanceof Zend_Form_Element) {
(...)
}
if (isset($this->_elements[$element])) {
(...)
}
}
所以这还不支持。您只能添加Zend_Form_Element
个实例
答案 1 :(得分:1)
您只需添加
即可实现此目的$rowExperience->setIsArray(true);
这会使子表单像显示组一样工作,即它的值被包装在由子表单的名称(在您的情况下为experience$id
)索引的数组中。