0

我想创建 twitter bootstrap 兼容表单。根据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 工件,例如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 回答