Как я могу отрегулировать положение метки для элемента радио Zend-формы? - PullRequest
0 голосов
/ 30 апреля 2010

с этим куском кода

$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>

Однако мне не нужен тег ввода внутри тега метки. Нет необходимости в "
" либо ...

Какие декораторы я должен добавить, чтобы получить этот вывод?

<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 Ответ

1 голос
/ 03 мая 2010

Если вы используете значение по умолчанию 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 для стилизации вывода.
Если вы решите, вам нужно , чтобы изменить рендеринг, создайте свой собственный помощник вида и используйте его вместо стандартного.

...