Zend_form渲染问题

时间:2009-09-20 18:00:45

标签: zend-framework rendering zend-form decorator formatting

我需要一个主要包含复选框的zend_form。我需要对它们进行分组,并为每个组显示标题。 e.g。

标题1

Label1 Check1

Label2 Check2

Label3 Check3

标题2

Label4 Check4

Label5 Check5

Label6 Check6

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

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

有人有什么想法吗? 感谢名单!

2 个答案:

答案 0 :(得分:4)

您可能会对本手册的这一部分感兴趣,该部分似乎与您想要获得的内容完全一致:23.4.3. Display Groups (引用)

  

显示组是一种创建方式   虚拟的元素分组   显示目的。所有元素都保留   可以通过表格中的名称访问,但是   当迭代表单或   渲染,显示中的任何元素   组合在一起。最多   这是一个常见的用例   在字段集中对元素进行分组。

这应该允许您将表单元素重新分组到字段集中,并且每个表单元素都可以具有其图例 - 在您的情况下,将是“标题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ées”是用于包含这些元素的字段集的“legend”。

答案 1 :(得分: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' );

然后您可以添加'note'元素类型,它们只显示标题之类的静态文本。例如

$form->addElement( 'note', 'my_note', array( 'label' => 'Heading 1' ) );