Zend Checkbox Decorator Проблема - PullRequest
1 голос
/ 20 июня 2011

Здравствуйте, я пытаюсь сделать отображение флажка следующим образом:

<input name="choice2" id="choice2" value="1" type="checkbox">
<label for="choice2" class="optional">Credit Card</label><br />
Some text

<input name="choice2" id="choice2" value="1" type="checkbox">
<label for="choice2" class="optional">Credit Card</label><br />
Some text

Я очень близко подошел со следующим кодом:

$lbl_spagym = 'Credit Card<br />
              <p class="description">Some text</p><br />';

$chk_spagym = new Zend_Form_Element_Checkbox('chk_spagym');
$chk_spagym->setLabel($lbl_spagym)
           ->setDecorators(array(
           'ViewHelper',
        'Description',
            'Errors',
        array('Label', array('placement' => 'APPEND', 'escape' => false)),
        array('HtmlTag', array('tag' => 'div'))
    )); 

Он отображается как:

<div>
<input type="hidden" name="chk_bank" value="0" />
<input type="checkbox" name="chk_bank" id="chk_bank" value="1" checked="checked" />
<label for="chk_bank" class="optional">Credit Card<br />
                     <p class="relocation_descr">Some text</p><br />
</label></div>

Но мне нужно, чтобы <p></p> был вне тега label, потому что «некоторый текст» - это описание, а не метка.Я играл с декораторами в течение нескольких дней, но не могу понять это поведение правильно.Буду признателен за любые комментарии по этому поводу.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Я разобрался с проблемой:

$checkbox_e->setLabel($e_label)
           ->setDecorators(array('ViewHelper',
                                 'Description',
                                 'Errors',
                                 array('Label',
                                       array('placement'=>'APPEND')),
                                       array('HtmlTag', array('tag' => 'div'))));
1 голос
/ 21 июня 2011

Вы должны быть в состоянии создать эту разметку, используя что-то вроде

$form->addElement('checkbox', 'choice2', array(
    'label'      => 'Credit Card',
    'decorators' => array(
        'ViewHelper',
        array('Label', array('placement' => 'append',
                             'class'     => 'optional'))
    )
));

Это создаст скрытый элемент для значения флажка «off», но поверьте мне, вы хотите оставить это.

...