繁体   English   中英

在web2py中创建可重复的自定义表单字段?

[英]Create repeatable custom form fields in web2py?

我想创建符合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' (即使使用formstyle='divs' )。 另外,我希望我的html输出是干净的,而没有诸如class="w2p_fl" web2py工件。 所以我的想法是使用自定义表单。 但是,这样做会产生很多重复的代码。 即,对于每个字段,基本上将需要重复以下操作。

{{=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助手? 创建我自己的小部件? 其他方式?

如果您使用的是Bootstrap 2,则可以执行以下操作:

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

对于Bootstrap 3(或您要创建的任何其他自定义表格样式), formstyle参数可以是生成表格DOM的函数(或其他可调用的)。 该函数将通过表单和fields对象传递,该对象是一个元组列表,每个元组包含一个CSS id,label,input元素和(可能为空)注释/帮助文本。 要了解这种功能的外观,请查看用于Bootstrap 2表单的功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM