如何调整zend form Radio元素的标签位置?

时间:2010-04-30 08:14:40

标签: php zend-framework zend-form

使用这段代码

$feOnline = New Zend_Form_Element_Radio('online');
$feOnline->setValue($article->online)
        ->addMultiOptions(array(0=>'offline', 1=>'online'))
        ->setLabel('Online');

生成此html

<dd id="online-element">
<label for="online-0">
    <input type="radio" checked="checked" value="0" id="online-0" name="online">offline
</label><br>
<label for="online-1"><input type="radio" value="1" id="online-1" name="online">online
</label>
</dd>

但是我不希望label-tag中的input-tag。不需要“
”......

我必须添加哪些装饰器才能获得此输出?

<dd id="online-element">
    <input type="radio" checked="checked" value="0" id="online-0" name="online"><label for="online-0">offline</label>
    <input type="radio" value="1" id="online-1" name="online"><label for="online-1">online</label>
</dd>

1 个答案:

答案 0 :(得分:1)

如果使用默认Zend_View_Helper_FormRadio,则无法更改广播的呈现方式 代码如下(第159行)

// Wrap the radios in labels
$radio = '<label'
        . $this->_htmlAttribs($label_attribs) . ' for="' . $optId . '">'
        . (('prepend' == $labelPlacement) ? $opt_label : '')
        . '<input type="' . $this->_inputType . '"'
        . ' name="' . $name . '"'
        . ' id="' . $optId . '"'
        . ' value="' . $this->view->escape($opt_value) . '"'
        . $checked
        . $disabled
        . $this->_htmlAttribs($attribs)
        . $endTag
        . (('append' == $labelPlacement) ? $opt_label : '')
        . '</label>';

没有配置来更改逻辑。 想一想真的需要改变渲染方式的原因,例如尝试使用CSS来设置输出样式。
如果你得出结论,你需要来改变渲染,创建你自己的视图助手并使用它而不是默认的。