Re: How do I use selected/checked ?

Raymond Barkhouse <raymond-82PhMCRFPxX1uJ/[email protected]>
Newsgroups gmane.comp.lang.perl.modules.petal
Organization Print-Quotes Software Inc.
Message-ID <[email protected]>
On Thu, 2005-01-09 at 10:48 +0200, Olaf Buwen wrote:
> This template:
> 
> <select>
>     <option
> 	petal:repeat="entry options"
>         petal:attributes="value entry/lang; selected entry/selected"
>         petal:content="entry/title"/>
> </select>
> 
> with this code:
> ...
> print $template->process(
>     options => [
>         {lang => "foo", title => "Foobar"},
>         {lang => "bar", title => "Barbar", selected => 'selected'},
>         {lang => "baz", title => "Bazbar"},
>     ]
> );
> 
> gives this output:
> <select>
>         <option value="foo" >Foobar</option>
> 	<option value="bar" selected="selected">Barbar</option>
> 	<option value="baz" >Bazbar</option>
> </select>
> 

That's the same method I use for very dynamic forms. For just filling in
form variables from a database/Apache::Request->param/CGI->param though
you might want to consider using HTML::FillInForm.

Given a hash (
	foo => 'quibble',
	bar => 'qax',
	baz => '3',
);

Some form elements:

	<input name="foo" type="text" value="" />

        <input name="bar" type="radio" value="qux" />
        <input name="bar" type="radio" value="qax" />
        <input name="bar" type="radio" value="quz" />

	<select name="baz">
	  <option value="1">One</option>
	  <option value="2">Two</option>
	  <option value="3">Three</option>
	  <option value="4">Four</option>
	</select>

And a slight change to your perl:

	$r->print(HTML::FillInForm->new->fill(
            fdata     => \%hash, 
            scalarref => \$t->process($other_stuff),
	));

Will give you:

	<input name="foo" type="text" value="quibble" />

        <input name="bar" type="radio" value="qux" />
        <input name="bar" type="radio" value="qax" checked="checked" />
        <input name="bar" type="radio" value="quz" />

	<select name="baz">
	  <option value="1">One</option>
	  <option value="2">Two</option>
	  <option value="3" selected="selected">Three</option>
	  <option value="4">Four</option>
	</select>


Much cleaner at the expense of some processing. I'm currently working on
doing the substitution at the same time Petal is processing the XML
stream as there's no need to process it twice (as it currently
happening). If anyone else is working in that direction I'd be
interested in hearing from you.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.