I'd like to create a form (using FunFormKit) dynamically, when the
servlet runs. Currently I do this as follows:
formDef = FormDefinition( "SelectDb", [])
layout = []
class SelectDb(BasicForm):
def __init__(self):
BasicForm.__init__(self, formDef, layout)
def renderForm(self, deffields):
fields, layout, values = self.buildForm()
formDef.setFields(fields, None)
rf = self.renderableForm(defaults=values, formDefinition=formDef)
self.write(rf.htFormLayout(layout, spacing=10))
def buildForm(self):
# creates fields and layout structure using DB info
return fields, layout, values
That requires a patch to FunFormKit/Form.py to provide the setFields()
method:
diff -ru FunFormKit/Form.py orig/Form.py
--- FunFormKit/Form.py Thu Oct 24 07:57:12 2002
+++ orig/Form.py Wed Jan 22 17:45:37 2003
@@ -539,10 +539,13 @@
self._name = name
self._method = method
self._formValidators = formValidators
+ self._errorFormatter = errorFormatter
+ self.setFields(fields, enctype)
+
+ def setFields(self, fields, enctype):
self._fields = {}
self._fieldOrder = []
self._submitFields = {}
- self._errorFormatter = errorFormatter
for field in fields:
name = field.name()
self._fields[name] = field
What bothers me is the need of patching FFK (Ian, would you accept this
patch?). Is there a better way to do what I want?
--
Bst rgrds, M.A.X.: Mechanical Artificial Xenomorph.
|