Changes between Version 19 and Version 20 of S3/S3ReusableField


Ignore:
Timestamp:
06/12/14 11:37:28 (10 years ago)
Author:
Dominic König
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • S3/S3ReusableField

    v19 v20  
    6868}}}
    6969
     70== Multiple Widgets ==
     71
     72It is possible to specify multiple possible widget alternatives in the S3ReusableField, and then apply them by name.
     73
     74Example:
     75
     76{{{#!python
     77organisation_id = S3ReusableField("organisation_id", "reference org_organisation",
     78                                  requires = IS_EMPTY_OR(IS_ONE_OF(db, "org_organisation.id",
     79                                                                   org_organisation_represent)),
     80                                  represent = org_organisation_represent,
     81                                  label = T("Organisation"),
     82                                  widgets = {"default": S3OrganisationAutocompleteWidget(default_from_profile=True),
     83                                             "hierarchical": S3HierarchyWidget(lookup = "org_organisation",
     84                                                                               represent = org_organisation_represent,
     85                                                                               multiple = False,
     86                                                                               leafonly = False,
     87                                                                               ),
     88                                             },
     89                                  )
     90}}}
     91
     92Without override or explicit choice, the "default" widget would be used in Field instances.
     93
     94To choose a widget by name:
     95
     96{{{
     97tablename = "my_table"
     98table = db.define_table(tablename,
     99                        ...,
     100                        # Choose the "hierarchical" widget for this instance:
     101                        organisation_id(widget="hierarchical"),
     102                        ...
     103                        )
     104}}}
     105
     106This is especially useful if the choice of the widget depends on a deployment setting.
     107
     108However, every instance can still override all possible alternatives:
     109
     110{{{
     111tablename = "my_table"
     112table = db.define_table(tablename,
     113                        ...,
     114                        # Specify the widget explicitly:
     115                        organisation_id(widget=MyCustomWidget()),
     116                        ...
     117                        )
     118}}}
     119
     120...or enforce the web2py standard widget for the field type:
     121
     122{{{
     123tablename = "my_table"
     124table = db.define_table(tablename,
     125                        ...,
     126                        # Enforce web2py standard widget for the field type:
     127                        organisation_id(widget=None),
     128                        ...
     129                        )
     130}}}
     131
    70132----
    71133DeveloperGuidelines