Добавление переключателей в настраиваемую форму в web2py - PullRequest
2 голосов
/ 17 сентября 2011

Я пытаюсь отобразить поле в виде группы переключателей в настраиваемой форме. Я хочу разместить каждый переключатель в отдельном ряду в таблице. Проблема в том, что когда я использую {{=form.custom.selection_type[0]}}, виджет оборачивается нежелательными тегами tr и td. Есть ли способ добавить только радиокнопку?

Моя форма:

{{extend 'layout.html'}}
{{=form.custom.begin}}
<table>
  <tr>
    <td> {{=form.custom.selection_type[0]}}:</td>
    <td> {{=form.custom.widget.biller_list}}</td>
  </tr>
  <tr>
    <td> {{=form.custom.widget.selection_type[1]}}:</td>
    <td> {{=form.custom.widget.biller_code}}</td>
  </tr>
</table>
{{=form.custom.end}}

Пример того, что происходит в html-коде:

<table>
  <tr>
    <td> <tr><td><input name="selection_type" type="radio" value="From my biller list" />From my biller list</td></tr>:</td>
    ...
  </tr>
...
</table>

Моя модель:

db.define_table('payment_bpay_step1',
    Field('selection_type', 'list:string'),
    Field('biller_list', db.biller, notnull=True),
    Field('biller_code'),
    Field('biller_name'))
db.payment_bpay_step1.selection_type.requires = IS_IN_SET(('From my biller list', 'Search by biller code', 'Search by biller name'))
db.payment_bpay_step1.selection_type.widget = SQLFORM.widgets.radio.widget

1 Ответ

1 голос
/ 18 сентября 2011

Это еще не в стабильной версии, но в транке, теперь вы можете указать стиль ul или divs вместо стиля таблицы для радио виджета. Я думаю, что это будет:

db.payment_bpay_step1.selection_type.widget = \
    lambda f, v: SQLFORM.widgets.radio.widget(f, v, style='divs')

Вы также можете создать собственный виджет, как описано в конце этого раздела в книге .

Когда вы говорите, что хотите, чтобы «innerhtml» отличался от значения переключателя, вы говорите о ярлыке рядом с переключателем? Для этого валидатор IS_IN_SET принимает аргумент «метки», который представляет собой список меток, связанных с опциями в наборе.

...