<html>
<head />
<body>
Hi Christian,<br /><br />sure, I also changed the code a bit so that it is now a list of objects: <br /><br />URL: http://localhost:8020/Foo/admin<br />File '/root/.buildout/eggs/Paste-1.7.2-py2.6.egg/paste/evalexception/middleware.py', line 306 in respond<br /> app_iter = self.application(environ, detect_start_response)<br />File '/root/.buildout/eggs/zope.app.wsgi-3.6.1-py2.6.egg/zope/app/wsgi/__init__.py', line 59 in __call__<br /> request = publish(request, handle_errors=handle_errors)<br />File '/root/.buildout/eggs/zope.publisher-3.12.3-py2.6.egg/zope/publisher/publish.py', line 134 in publish<br /> result = publication.callObject(request, obj)<br />File '/root/.buildout/eggs/grok-1.1.1-py2.6.egg/grok/publication.py', line 89 in callObject<br /> return super(ZopePublicationSansProxy, self).callObject(request, ob)<br />File '/root/.buildout/eggs/zope.app.publication-3.10.2-py2.6.egg/zope/app/publication/zopepublication.py', line 205 in callObject<br /> return mapply(ob, request.getPositionalArguments(), request)<br /><Foo.app.FooEditForm object at 0x26fd990><br />File '/root/.buildout/eggs/zope.publisher-3.12.3-py2.6.egg/zope/publisher/publish.py', line 109 in mapply<br /> return debug_call(obj, args)<br />File '/root/.buildout/eggs/zope.publisher-3.12.3-py2.6.egg/zope/publisher/publish.py', line 115 in debug_call<br /> return obj(*args)<br />File '/root/.buildout/eggs/grokcore.formlib-1.5-py2.6.egg/grokcore/formlib/components.py', line 90 in __call__<br /> self.update_form()<br />File '/root/.buildout/eggs/grokcore.formlib-1.5-py2.6.egg/grokcore/formlib/components.py', line 62 in update_form<br /> super(GrokForm, self).update()<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 750 in update<br /> errors, action = handleSubmit(self.actions, data, self.validate)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 693 in handleSubmit<br /> errors = default_validate(action, data)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 730 in validate<br /> return (getWidgetsData(self.widgets, self.prefix, data)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 346 in getWidgetsData<br /> data[name] = widget.getInputValue()<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/sequencewidget.py', line 165 in getInputValue<br /> sequence = self._type(self._generateSequence())<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/sequencewidget.py', line 227 in _generateSequence<br /> widget = self._getWidget(i)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/sequencewidget.py', line 105 in _getWidget<br /> (field, self.request), IInputWidget)<br />File '/root/.buildout/eggs/zope.component-3.9.1-py2.6.egg/zope/component/_api.py', line 111 in getMultiAdapter<br /> raise ComponentLookupError(objects, interface, name)<br />ComponentLookupError: ((<zope.schema._field.Object object at 0x27994d0>, <zope.publisher.browser.BrowserRequest instance URL=http://localhost:8020/Foo/admin>), <InterfaceClass zope.formlib.interfaces.IInputWidget>, u'')<br /><br />class IFooField(interface.Interface):<br /> name = schema.TextLine(title=u'Name', required = True)<br /> format = schema.Choice(title=u'Field Format', required = True, values = ['Text', 'Date', 'Number'])<br /> <br />class IFoo(interface.Interface):<br /> title=schema.TextLine(title=u'Title',required=True)<br /> description=schema.TextLine(title=u'Description',required=False)<br /> data_fields= schema.List(title=u'Fields', required = False, unique = True, <br /> value_type = schema.Object(title=u'Field', required = False, schema = IFooField))<br /> <br />class Foo(grok.Application, grok.Container):<br /> grok.implements(IFoo)<br /> title = u'Foobar'<br /> description = u''<br /><br />class FooEditForm(grok.EditForm):<br /> grok.context(Foo)<br /> grok.name('admin')<br /> <br /> form_fields = grok.AutoFields(Foo)<br /> template = grok.PageTemplateFile('custom_edit_form.pt') <br /><br />Many thanks again!<br /><br />Sascha<br />
<div class="signature"><br /><br /><br />-- <br />Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief! <br />Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail</div></body>
</html>