Проблема рендеринга Zend_form - PullRequest
0 голосов
/ 20 сентября 2009

Мне нужен zend_form, который будет содержать в основном флажки. Мне нужно сгруппировать их, а также отобразить заголовок для каждой группы. например,

Заголовок 1

Label1 Check1

Label2 Check2

Label3 Check3

Заголовок 2

Label4 Check4

Label5 Check5

Label6 Check6

Сначала я не знаю, как отобразить заголовок ("заголовки")! Есть ли способ добавить метку к форме, но не к элементу или какому-либо другому решению, чтобы добавить эти заголовки в Zend Form?

Во-вторых, как я могу сделать так какой декоратор мне использовать? Я что-то красил в декораторах, но я ничего не понял?

У кого-нибудь есть идея? спасибо!

Ответы [ 2 ]

4 голосов
/ 20 сентября 2009

Вас может заинтересовать этот раздел руководства, в котором, как представляется, именно то, что вы хотите получить: 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ées ", насколько я помню, это "legend", используемый для набора полей, содержащего эти элементы.

0 голосов
/ 21 сентября 2009

попробуйте добавить этот класс

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

в каталог / Ваш / Свой / Форма / Элемент, например

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

Затем вы можете добавить типы элементов «примечание», которые просто отображают статический текст, как ваши заголовки. например,

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