Zend Checkbox装饰器问题

时间:2011-06-20 10:34:44

标签: zend-framework checkbox zend-form

您好我正在尝试执行以下复选框显示:

<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>超出标签标签,因为'some text'是描述而不是标签。我玩装饰器好几天但是不能正确地做这个行为。非常感谢你的任何评论。

2 个答案:

答案 0 :(得分:1)

您应该能够使用

之类的东西创建标记
$form->addElement('checkbox', 'choice2', array(
    'label'      => 'Credit Card',
    'decorators' => array(
        'ViewHelper',
        array('Label', array('placement' => 'append',
                             'class'     => 'optional'))
    )
));

这会为复选框“off”值生成一个隐藏元素,但相信我,你想保留它。

答案 1 :(得分:1)

我将问题排序为:

$checkbox_e->setLabel($e_label)
           ->setDecorators(array('ViewHelper',
                                 'Description',
                                 'Errors',
                                 array('Label',
                                       array('placement'=>'APPEND')),
                                       array('HtmlTag', array('tag' => 'div'))));