2011-09-17 16 views
2

ラジオボタングループとしてフィールドをカスタマイズしたフォームで表示しようとしています。各ラジオボタンをテーブルの異なる行に配置したいと思います。問題は、私が{{=form.custom.selection_type[0]}}を使用すると、ウィジェットが不要なtrtdタグでラップされている場合です。ラジオボタンだけを追加する方法はありますか?web2pyでカスタマイズしたフォームにラジオボタンを追加する

マイ形式:HTMLソースコードで何が起こっているかの

{{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}} 

例:

<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

それはまだ安定していないのですが、トランク内ラジオウィジェットの表スタイルではなくulまたはdivsスタイルを指定できるようになりました。

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

this section in the bookの最後で説明したようにあなたはまた、カスタムウィジェットを作成することができます。私はそれが可能だと思います。

"innerhtml"とラジオボタンの値を異ならせる場合は、ラジオボタンの隣にあるラベルについて話していますか?そのために、IS_IN_SETバリデーターは 'labels'引数をとります。これは、セット内のオプションに関連付けられたラベルのリストです。

+0

ありがとう! IS_IN_SET()のlabels引数はうまくいきました。しかし、私はlamda関数を動作させることができませんでした。私は[あなたの他の回答](http://stackoverflow.com/questions/6596900/web2py-form-field-options)のいずれかであなたの回答を使用してカスタムウィジェットを作成しました。 – br3nt

+0

上記のラムダ関数の解は、現在の安定版web2py(1.98.2ではありません)を使用している場合にのみ動作します。トランクはいつでも1.99.1としてリリースされます。今のところ、[こちら](http://code.google.com/p/web2py/source/checkout)を入手できます。または、[ウィジェットの新しいバージョン](http://code.google.com/p/web2py/source/browse/gluon/sqlhtml.py#286)をコピーしてカスタムウィジェットを作成することができます。 – Anthony

関連する問題