0

twitter ブートストラップ準拠のフォームを作成したい。Twitter Bootstrap v2.2.2 (web2py に含まれるバージョン)のドキュメントによると、html は次のようになります。

<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="inputEmail">Email</label>
        <div class="controls">
            <input type="text" id="inputEmail" placeholder="Email">
        </div>
    </div>
...

私は現在、SQLFORMこれに実際には適合しない出力htmlを使用しています(使用してもformstyle='divs')。その上、.html などの web2py アーティファクトなしで、html 出力をきれいにしたいのですclass="w2p_fl"。だから私の考えは、カスタムフォームを使用することです。ただし、これを行うと、多くのコードが繰り返されます。つまり、基本的にはフィールドごとに以下を繰り返す必要があります。

{{=form.custom.begin}}
<div class="control-group">
    {{=LABEL(form.custom.label['myfield'], _class='control-label',
        _for='mytable_myfield')}}
    <div class="controls">{{=form.custom.widget.myfield}}</div>
</div>
...
{{=form.custom.end}}

では、上記のコード単位を繰り返して、{{=bootstrap_field(db.mytable.myfield)}} のようなものや DRY に準拠する他の方法に置き換えるにはどうすればよいでしょうか?

これを行うためのweb2pyの方法は何ですか? ビュー関数を作成しますか? コントローラーから返された辞書に関数を渡しますか? 独自の HTML ヘルパーを作成しますか? 自分のウィジェットを作成しますか? 別の方法?

4

1 に答える 1

3

Bootstrap 2 を使用している場合は、次のようにするだけです。

form = SQLFORM(..., formstyle='bootstrap')

Bootstrap 3 (または作成したいその他のカスタムフォームスタイル) の場合、formstyle引数はフォーム DOM を生成する関数 (またはその他の呼び出し可能) にすることができます。この関数には、フォームと、fieldsタプルのリストであるオブジェクトが渡されます。各タプルには、CSS ID、ラベル、入力要素、および (場合によっては空の) コメント/ヘルプ テキストが含まれます。そのような関数がどのように見えるべきかを理解するには、Bootstrap 2 フォームに使用される関数を調べてください。

于 2013-10-11T03:15:51.787 に答える