Zend 中的显示字段的动态表单元素

问题描述 投票:0回答:2

我正在开发一个可以将用户放入组中的应用程序。可以在数据库中添加/编辑这些组,因此它们是动态的。我有以下表格:

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 中。

为什么这不起作用?我做错了什么?

php zend-framework zend-form
2个回答
0
投票

您应该在 Zend_Form::addDisplayGroup 上放置一个断点并调试它。我发现您的代码没有任何问题,也许您的数据未正确检索。

如果您在

Zend_Debug::dump
上画
disciplines
,会显示什么?

您应该通过表单的 setDisciplines 方法来传递您的纪律,而不是在 init 中对其进行硬编码。


0
投票

我的一份表格中也有类似的问题。原因是我添加到表单中有一个名为 _(displayGroup 的名称) 的私有属性。想象一下,在您的情况下,您有一个名为 _disciplineInformation 的私有属性名称。不知怎的,这造成了一个问题,我得到了与你得到的相同的结果。

我建议您将显示组上的名称更改为诸如disciplineInformationToTest之类的名称,然后看看它是否如名称所示通过了经典的CTRL-R测试。

希望这会起作用;如果没有,请在问题中添加完整的异常转储。

© www.soinside.com 2019 - 2024. All rights reserved.