Am Freitag, 10. August 2007 04:14 schrieb Andrew Groom: > Hi All, > > I've been battling with formlib for the last three days now and, while > I've learnt a lot, it's nearly driven me crazy. I'm trying to use it to > create simple search form, i.e., a form that does input validation, > remembers the values you entered, etc., but is not tied to a persisted > object. > > I've got the form rendering and processing requests, but I'm completely > stuck on getting the form to remember the values I just entered after a > form post. > > Has anyone got any suggestions ? Here's what I've got so far, the latest > attempt being to use a dummy object to provide the context, which also > doesn't seem to work:
Yes, I do the same and use a self-made class, called "ActionForm" for that, it's quite simple: class ActionForm(Formframe, form.Form): """ Generic form for context-less patterns """ def updateWidgets(self): self.widgets = getMultiAdapter( (self, self.request, self.getContent()), IWidgets) self.widgets.ignoreContext = True self.widgets.update() Then I have a persisten object, that acts as an entry point to my view, and which may provide various methods, e.g.: class SearchData(persistent.Persistent): implements(ISearchData) def search_data(self, **kd): # Here the data is retrieved, in my case from a relational database return data And then there's the view: class ViewSerachKunde(ActionForm): formErrorsMessage = _('There were some errors.') template = ViewPageTemplateFile('pt/searchdata.pt') fields = field.Fields(IViewSearchData) # If data is found, it's stored in a view-object-attribute found_data = None @button.buttonAndHandler('Search', name='search') data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return self.found_data = self.context.search_data(**data) And then in my template file I have something like this (please note that I use a custom library for displaying fields (formsnippet): <--! This displayes the search-widgets --> <span tal:repeat="widget view/widgets/values"> <span tal:replace="structure widget/snippets/div" /> </span> <--! And this displays the found data --> <div tal:condition="view/found_data"> <h2>Found Data:</h2> <span tal:replace="structure view/found_data"/> </div> Best Regards, Hermann -- [EMAIL PROTECTED] GPG key ID: 299893C7 (on keyservers) FP: 0124 2584 8809 EF2A DBF9 4902 64B4 D16B 2998 93C7 _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users