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

Forms 在web2py中创建可重复的自定义表单字段?,forms,twitter-bootstrap,dry,web2py,Forms,Twitter Bootstrap,Dry,Web2py,我想创建与twitter引导兼容的表单。根据(web2py附带的版本),html应该如下所示: <form class="form-horizontal"> <div class="control-group"> <label class="control-label" for="inputEmail">Email</label> <div class="controls">

我想创建与twitter引导兼容的表单。根据(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>
...
那么,我如何重复上面的代码单元,以便用类似于{{=bootstrap_field(db.mytable.myfield)}的东西或其他坚持DRY的方法来替换它呢


web2py是如何做到这一点的?创建一个视图函数?是否在控制器返回的字典中传递函数?创建我自己的html助手?创建我自己的小部件?另一种方法?

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

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

对于Bootstrap 3(或您想要创建的任何其他自定义formstyle),
formstyle
参数可以是生成表单DOM的函数(或其他可调用函数)。函数将被传递表单和
字段
对象,这是一个元组列表,每个元组包含CSS id、标签、输入元素和(可能是空的)注释/帮助文本。要了解这样一个函数应该是什么样子,请查看。

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

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

对于Bootstrap 3(或您想要创建的任何其他自定义formstyle),
formstyle
参数可以是生成表单DOM的函数(或其他可调用函数)。函数将被传递表单和
字段
对象,这是一个元组列表,每个元组包含CSS id、标签、输入元素和(可能是空的)注释/帮助文本。要了解这样一个函数应该是什么样子,请查看。

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

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

对于Bootstrap 3(或您想要创建的任何其他自定义formstyle),
formstyle
参数可以是生成表单DOM的函数(或其他可调用函数)。函数将被传递表单和
字段
对象,这是一个元组列表,每个元组包含CSS id、标签、输入元素和(可能是空的)注释/帮助文本。要了解这样一个函数应该是什么样子,请查看。

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

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


对于Bootstrap 3(或您想要创建的任何其他自定义formstyle),
formstyle
参数可以是生成表单DOM的函数(或其他可调用函数)。函数将被传递表单和
字段
对象,这是一个元组列表,每个元组包含CSS id、标签、输入元素和(可能是空的)注释/帮助文本。要了解这样一个函数应该是什么样子,请查看。

完美!奇怪的是,
bootstrap
formstyle在我能找到的文档中没有。我还看到formstyle可以在文档中调用:
formstyle也可以是一个函数,它将(记录id、字段标签、字段小部件、字段注释)作为属性并返回TR()对象。
但因为它说的是
TR
,我不想要一个表,所以我想它不能做我想要的。我的回复中的所有内容都没有记录。你从书中引用的文本已经过时了——这仍然有效,但是你现在可以传入一个可调用的对象,它生成整个表单DOM,而不仅仅是单个的
TR
对象(框架代码将检查您的函数,根据它需要多少个参数来确定它是传统类型还是新类型——如果它需要4个参数,则假定它是一个传统函数)。此外,对于如何处理可重复代码单元的问题,我仍然感兴趣(formstyle函数除外)如果你有一个答案需要编辑。如果你想用可重复的代码生成一个表单DOM,那么类似formstyle函数的东西就是最好的选择(即使您实际上没有将它与
formstyle
参数一起使用,您仍然希望使用一个与这些行相关的函数以编程方式构建表单)我也可以在模型文件中定义函数,这样它就可以随处可见,或者把它放在一个模块中并导入它。你也可以考虑在控制器中调用它,然后把最终的形式DOM传递给视图。如果你只需要调整现有的形式DOM,就可以使用该功能。另一个选项可能是创建一个特殊的视图T。emplate,将其包含在视图中,并确保从控制器返回所需的数据。完美!奇怪的是,
bootstrap
formstyle在文档中找不到。我还看到formstyle可以在文档中调用:
formstyle也可以是一个(记录\u id、字段\u标签、字段\u小部件、字段\u注释)作为属性并返回TR()对象。
但由于它说的是
TR
,我不想要一个表,所以我想它不能做我想要的。我的回答中的所有内容都没有文档记录。你从书中引用的文本已经过时了——这仍然有效,但是你现在可以传入一个可调用的对象,它生成整个表单DOM,而不仅仅是单个
TR
对象(框架代码将检查您的函数,根据它需要多少个参数来确定它是传统类型还是新类型——如果它需要4个参数,则假定它是一个传统函数)。此外,对于如何处理可重复代码单元的问题,我仍然感兴趣(formstyle函数除外)如果你有一个答案需要编辑。如果你想用可重复的代码生成一个表单DOM,那么类似formstyle函数的东西就是最好的选择(即使您实际上没有将它与
formstyle
参数一起使用,您仍然希望使用一个与这些行相关的函数以编程方式构建表单)我也可以在模型文件中定义函数,这样它就可以随处可见,或者把它放在一个模块中并导入它。你也可以考虑在控制器中调用它,然后把最终的形式DOM传递给视图。如果你只需要调整现有的形式DOM,就可以使用该功能。另一个选项可能是创建一个特殊的视图T。安置