Joel Moxley wrote: > 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?
self.request.getHeader('HTTP_REFERER') > > ** > 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 -- --------------------------------------------------- Jürgen Kartnaller mailto:juergen_at_kartnaller.at http://www.kartnaller.at http://www.mcb-bregenz.at --------------------------------------------------- _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users