In trying to work out how to traverse from a z3c.form Form for a simple scenario, I've uncovered something a little confusing with the Form code.
In my case the user specifies search criteria then gets a results page. I am doing the following; from z3c.form import form from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile class SearchForm(form.Form): # usual stuff fields=... def @handleSearch(self, action): # process criteria and setup for displaying results ... self.template = ViewPageTemplateFile('www/results.pt') Which breaks because of BaseForm's render() method (see comments): def render(self): '''See interfaces.IForm''' # render content template if self.template is None: template = zope.component.getMultiAdapter((self, self.request), IPageTemplate) return template(self) # ** displays ok default edit form return self.template() # ** breaks results page no instance Should the last line be self.template(self) because ViewPageTemplateFile.__call__(self, instance, *args **kw) requires a single mandatory argument? Although ViewPageTemplateFile requires an argument, IPageTemplate doesn't mandate it so I'm wondering if there were other adapters the code's author had in mind when doing this. It seems a little inconsistent to a zope3 novice anyway. _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )