Forgot to cc the list. ---------- Forwarded message ---------- Date: Fri, 26 Apr 2002 11:35:37 -0400 (EDT) From: Ken Y. Clark <[EMAIL PROTECTED]> To: F.Xavier Noria <[EMAIL PROTECTED]> Subject: Re: How to generate pre-filled forms?
On Fri, 26 Apr 2002, F.Xavier Noria wrote: > Date: Fri, 26 Apr 2002 16:15:52 +0200 > From: F.Xavier Noria <[EMAIL PROTECTED]> > To: [EMAIL PROTECTED] > Subject: How to generate pre-filled forms? > > I am writing some modules that receive a form, process it, and return a > page that includes that very form. Is there a standard way to fill that > returned form so the user sees the same data he sent there, as CGI.pm > does? > > -- fxn > > PS: I am using Apache modules + HTML::Template if that matters. I'll throw my technique into the ring, too. I use Template Toolkit most of the time, and I pass the original Apache request object back to the template as a parameter. Then I call the "param" method to fill in the "value" of form elements, like so: In code: sub handler { my $r = shift; my $apr = Apache::Request->new($r); my $t = Template->new; my $html; $t->process('/foo/bar.tmpl', { apr => $apr }, \$html); $apr->content_type('text/html'); $apr->send_http_header; $apr->print( $html ); return OK; } In template: <form> <input name="foo" value="[% apr.param('foo') %]"> <textarea name="text">[% apr.param('description') %]</textarea> </form> Nothing gets placed there the first time through as calling "$apr->param" returns nothing. This seems to work great for me. I've not used HTML::Template in a while, but possibly you can do this, too? Template Toolkit makes it easy to call methods (or deference hashes and hash references) with the "dot" notation. HTH, ky