我正在开发一个可以将用户放在一个组中的应用程序。可以在数据库中添加/编辑组,使其成为动态组。我有以下表格:
public function init()
{
$this->setMethod('post')
->setAttrib('id', 'userGroup');
//get the stuff out of the db
$group = new Application_Model_GroupMapper();
$disciplines = $group->fetchAll(array(
'type' => 'discipline',
'orderby' => 'g.name',
'sort' => 'ASC'
));
$disciplineFields = array();
foreach($disciplines as $row):
$el = $row->name;
$this->addElement('checkbox', $el, array(
'required' => false,
'label' => $el,
'class' => 'inputCheckbox'
));
$this->$el->setCheckedValue('true');
$this->$el->setUnCheckedValue('false');
array_push($disciplineFields,$el);
endforeach;
//discipline information
$this->addDisplayGroup(
$disciplineFields,
'disciplineInformation',
array('legend' => 'Discipline')
);
但是我收到错误:
没有为显示组
指定有效元素
这很奇怪,因为当我计算我的数组 $ disciplineFields 时,它有4个项目,当我删除displayGroup行时,字段会被回显。当我将displayGroup行修改为
时//discipline information
$this->addDisplayGroup(
array('Schipper'), //this is one of the records in the database
'disciplineInformation',
array('legend' => 'Discipline')
);
“Schipper”字段显示在fieldset / displayGroup中。
为什么这不起作用?我做错了什么?
答案 0 :(得分:0)
你应该在Zend_Form :: addDisplayGroup上放一个断点并进行调试。我认为你的代码没有错,也许你的数据没有被正确检索。
如果您在Zend_Debug::dump
上disciplines
,会显示什么?
你应该通过表单的setDisciplines方法传递你的纪律,而不是在init中硬编码。
答案 1 :(得分:0)
我的一个表格中有类似的问题。原因是我在表单中添加了一个名为_(displayGroup的名称)的私有属性。想象一下,在您的情况下,您有一个名为_disciplineInformation的私有属性名称。不知何故,这产生了一个问题,我得到了相同的结果。
我建议您将显示组上的名称更改为discipInformationToTest,并查看是否通过了经典的CTRL-R测试。
希望这会奏效;如果没有,请在问题中添加完整的异常转储。