On 2/26/06, Gary Poster <[EMAIL PROTECTED]> wrote: > > On Feb 26, 2006, at 4:17 PM, jürgen Kartnaller wrote: > > > Joel Moxley wrote: > >>>> ** What is the best way to use a formlib EditForm to redirect a > >>>> user > >>>> after applying changes without fully cloning a "handle_edit_action" > >>>> method? ** > >>>> > >>> I'm doing it this way : > >>> > >>> def render(self): > >>> if self.errors is None or self.errors: > >>> return super(EditPerson, self).render() > >>> self.request.response.redirect('..') > >>> > >>> Jürgen > >> > >> Thanks Jürgen! That works perfectly for me. > >> > >> Looking one step forward, I would like to redirect the user back to > >> the previous page from whence they came (without using sessions). I > >> figure I am going to need to stash that value on my EditForm class > >> and > >> then pull it up during the redirect in my render method. I've > >> done my > >> best to explore this, but I can't figure out where the previous page > >> information will be available on my EditForm. > >> > >> ** Where should I stash previous page information for future > >> redirects > >> on my EditForm? ** > > > > That's also an unsolved use case I have. > > > > The 'default' template of 'FormBase' contains the slot 'extra_info' > > which could be filled with some hidden input fields. > > > > I defined a new template for my own EditForm. > > > > But now I would like to use the existing template in formlib > > 'pageform.pt' and fill the slot but don't know how. > > > > Is this a possible way and the right way ? > > > > How can I use the existing template ? > > It must be useable with metal:use-macro somehow. > > Yes, we write custom templates that use hidden input fields. We > reuse the existing template by putting the default template on > another attribute of the view class, and then saying 'metal:use- > macro="view/...' > > For instance > > class MyForm(zope.formlib.form.EditForm): > base_template = zope.formlib.form.EditForm.template > template = (...a named template if you want, or just a page > template directly...) > > Then in your template, you can refer to macros in the original like > this: > > 'metal:use-macro="view/base_template/macros/extra_info"' > > Notice that the pageform.pt *extends* the context/@@standard_macros/ > view macro, so you can customize slots from your main template too. > > There are lots of other solutions, but that's the one I know of that > I consider to be best ATM. > > Gary_______________________________________________ > Zope3-users mailing list > Zope3-users@zope.org > http://mail.zope.org/mailman/listinfo/zope3-users
Thanks. Ok, so now that I know the location on which to stash previous page information, _how_ do I get the previous page information? ** Ie, at what method in the edit form do I pull out the page from whence the user came? And most importantly, how do I get the page from whence the user came? Is it in the incoming request? I've been looking at the request object, but I did not see that information in there. ** So the idea is... page X -> edit.html -> "apply" -> page X ... where page X can change. Thanks, J _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users