2011-12-28 41 views
3

SQLFORM控件輸入鑑於此SQLFORM控制器自定義CSS類中的web2py

db.define_table('target_server', 
       Field('target_url', 'string'), 
       Field('target_user', 'string'), 
       Field('target_password', 'password')) 
db.define_table('target_server', 
       Field('target_url', 'string'), 
       Field('target_user', 'string'), 
       Field('target_password', 'password')) 

我怎麼可以將自定義CSS類爲每個表單小部件<input>元素?

{{=form.custom.begin}} 
    <fieldset> 
    <legend>Source Server</legend> 
    <div class="clearfix"> 
     <label for="source_url">URL:</label> 
     <div class="input"> 

     <input class="bla bla" name="field_name"> 

     </div> 
    </div> 
    ... 
    {{=form.custom.end}} 

回答

8

注意,所有小工具已經有一個命名爲小部件的類型(例如,「串」,「整數」,「日期」等),以及形式的ID「tablename_fieldname類「,所以你可以在你的CSS中使用這些,而不需要添加自定義類。有關更多詳細信息,請參見here

如果您確實需要自定義類,請注意web2py FORM和SQLFORM對象及其子組件是HTML helper objects,並且可以像任何HTML幫助程序一樣進行操作。具體而言,助手充當其組件和詞典相對於其屬性的列表(輸入類是INPUT對象的屬性)。所以,你可以做這樣的事情,無論是在創建表單中的控制器或視圖:如果您需要更改類特定類型的所有控件的

form.custom.widget.field_name['_class'] = 'bla bla' 

,你也可以做到這一點通過在.elements() search functionality

for input in form.elements('input', _class='string'): 
    input['_class'] = 'my-string' 

另外一個選擇是明確define a widget for the Field在表定義,或者使用自定義窗口小部件或簡單地傳遞_class屬性內置部件之一:

Field('target_user', 'string', widget = lambda field, value: 
    SQLFORM.widgets.string.widget(field, value, _class='my-string')) 

此方法將影響包含此字段的所有表單(除非您在創建表單之前明確刪除或替換小部件)。

+2

這應該包含在官方文檔中。 – 2011-12-29 00:54:19

+0

這些都可以從官方文檔中找到,但是是的,這有助於更清楚地瞭解這些內容。 – Anthony 2011-12-29 01:57:29