0

有没有一种简单的方法可以重新定位复选框的标签?我想以与其他控件相同的方式在左侧显示它们。

带有复选框标签的表单

4

2 回答 2

1

您只需要制作自己的表单样式(复制 formstyle_bootstrap3_inline_factory,我猜您正在使用它)

然后删除以不同方式处理复选框的规则:

elif controls['_type'] == 'checkbox':
                label['_for'] = None
                label.insert(0, controls)
                label.insert(1, ' ')
                _controls = DIV(DIV(label, _help, _class="checkbox"),
                                _class="%s %s" % (offset_class, col_class))
                label = ''
于 2020-12-09T14:25:45.860 回答
0

谢谢蒂姆的回答。这告诉了我我需要知道的一切。这是我必须做的:

  1. 在 中找到相关函数gluon\sqlhtml.py。对我来说是formstyle_bootstrap4_inline_factory

  2. _inner函数中的formstyle_boostrap4_inline_factory函数复制到我的应用程序中并重命名formstyle_myapp(将其放入模型文件中可能是最简单的)

  3. 复制add_class函数gluon.sqlhtml并将其添加到formstyle_myapp函数中。这使其formstyle_myapp仅对可见。

  4. 更改 db.py 中的默认formstyle设置以指向新函数:response.formstyle = formstyle_myapp

  5. 最后,调整复选框部分,formstyle_myapp将左侧的标签放置在所有其他标签下方,将复选框置于所有其他控件下方:

     elif controls['_type'] == 'checkbox' or controls['_type'] == 'radio':
         _controls = DIV(controls, _class="%s" % col_class)
    
于 2020-12-18T02:34:00.223 回答