Thanks for your reply. I'm still having problems getting this to work.
I'm not sure I am supposed to use a BaseForm, Form, AddForm, or what, for
the sub-item. I'm not sure how to register it in zcml to not get adaption
errors when I run it.
Would there be any chance to have the example with the "car" and "owner" in
the Sub-Form doc test included in the formdemo package. I'd like to see
that included with "Class I" and "Class II" for both AddForm and EditForm
since it is such a common use case.
Perhaps I'm just dense, but I still have problems converting doc tests into
an actual working zope instance. The formdemo package was a god send to get
a simple addform working since I had no idea you needed to use the
IFormLayer. Using the demo that was no longer a problem.
Again thanks for all your help.
>> Betreff: [Zope3-Users] z3c.form and subforms in an AddForm?
>> I've been trying out the new z3c form package and like what I
>> see. I am having problems getting a subform in an AddForm
>> though. The subform.txt covers EditForms where you have a
>> context object to work on, in an AddForm the context is the
>> underlying IContainer.
>> Here is what I have, using formdemo examples as the basis.
>> Any help on getting this to work is greatly appreciated.
>> IRestaurant with address attribute using schema.Object
>> holding an IAddress.
>> class RestaurantAddForm(AddFormLayoutSupport, form.AddForm):
>> """Add form"""
>> template = None
>> layout = None
>> contentName = None
>> label = u'Add Restaurant'
>> fields = field.Fields(IRestaurant).omit('address')
>> def update(self):
>> self.address = AddressAddForm(self.context.address,
>> self.request) ##
>> <---- Problem area
>> super(RestaurantAddForm, self).update()
> You can add a custom setupWidgets method in the sub form which
> disables the context adaption.
> Stephan and I duscussed this during development, I think we
> should add the hook into the form. He thinks not. But I guess
> we have to discuss this once again.
> Here is the method for context less forms:
> def updateWidgets(self):
> self.widgets = zope.component.getMultiAdapter(
> (self, self.request, self.getContent()), interfaces.IWidgets)
> self.widgets.ignoreContext = True
> self.widgets.ignoreReadonly = True
>> def create(self, data):
>> r = Restaurant()
>> r.name = data['name']
>> r.description = data['description']
>> r.address = data['address']
>> return r
>> def add(self, object):
>> self._name = object.name
>> self.context[self._name] = object
>> return object
>> def nextURL(self):
>> return absoluteURL(self.context[self._name], self.request)
> Roger Ineichen
View this message in context:
Sent from the Zope3 - users mailing list archive at Nabble.com.
Zope3-users mailing list