0

我需要一个主要包含复选框的 zend_form。我需要将它们分组并为每个组显示一个标题。例如

标题 1

标签1检查1

标签2检查2

标签3检查3

标题 2

标签4检查4

标签5检查5

标签6检查6

首先我不知道如何显示标题(“标题”)!有没有一种方法可以将标签添加到表单而不是元素或任何其他解决方案以在 Zend Form 中添加这些标题?

其次,我该如何渲染这种方式?我应该使用什么样的装饰器?我对装饰器有所了解,但我不太了解?

有人有什么想法吗?谢谢!

4

2 回答 2

4

您可能对手册的这一部分感兴趣,这似乎正是您想要获得的内容:23.4.3。显示组 (引用)

显示组是一种为显示目的创建元素虚拟分组的方法。表单中的所有元素仍可通过名称访问,但在遍历表单或呈现时,显示组中的任何元素都会一起呈现。最常见的用例是对字段集中的元素进行分组。

这应该允许您将表单元素重新组合在字段集中,并且每个元素都可以有其图例 - 在您的情况下,这将是“标题 X ”。

一旦您的复选框被添加到表单中,您应该能够使用以下内容重新组合它们:

$form->addDisplayGroup(array('checkbox1', 'checkbox2', 'checkbox3'), 'firstgroup');
$form->addDisplayGroup(array('checkbox4', 'checkbox5', 'checkbox6'), 'fsecondgroup');


对于渲染部分,我想它会使用Zend_Form_Decorator_Fieldset


评论后编辑

要设置每个组的标题,您必须设置其“ legend”,并将其作为选项传递。

例如,这是我从很久以前从事的一个旧项目中找到的一段代码:

$form->addDisplayGroup(array(
    'idCategory',
    'date',
    // ...
    'tags', 
    'nbComments'
), 
'postmeta', 
array(
    'order' => 2,
    'attribs' => array(
        'class' => 'group',
        'legend' => 'Meta-données'
    )
));

我记得,“ Meta-donnéeslegend ”是用于包含这些元素的字段集的“ ”。

于 2009-09-20T18:09:30.050 回答
0

尝试添加此类

class Zend_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    public $helper = 'formNote';    
}

到 /Your/Own/Form/Element 目录,例如

$form->addPrefixPath( 'LSS_Form_Element', 'LSS/Form/Element', 'element' );

然后,您可以添加仅显示静态文本(如标题)的“注释”元素类型。例如

$form->addElement( 'note', 'my_note', array( 'label' => 'Heading 1' ) );
于 2009-09-20T21:12:44.033 回答