HTML::Menu::Select - Create HTML for select menus to simplify your templates.
use HTML::Menu::Select qw( menu options ); my $html = menu( name => 'myMenu', values => [ 'yes', 'no' ], ); $tmpl->param( select_menu => $html );
This modules creates HTML for form select
items.
Traditionally, if you wanted to dynamically generate a list of options
in a select
menu, you would either have to use CGI's HTML
generation routines, or use a complicated template such as this:
<select name="day"> <TMPL_LOOP day> <option value="<TMPL_VAR value>" <TMPL_VAR selected>> <TMPL_VAR label> </option> </TMPL_LOOP> </select>
This module allows you to quickly prototype a page, allowing the CGI to completely generate the HTML, while allowing you at a later stage to easily change how much HTML it generates.
To install this module, run the following commands:
perl Makefile.PL make make test make install
Alternatively, to install with Module::Build, you can use the following commands:
perl Build.PL ./Build ./Build test ./Build install
menu()
Use menu()
to generate the entire HTML for a select menu.
This allows you to have a very simple template tag, such as:
<TMPL_VAR select_menu>
menu()
accepts the following parameters:
select
tag's name=""
attribute.
option
tags.
option
tag should have a
selected="selected"
attribute.
option
tag. Each key should match a
value provided by the values
parameter.
If this parameter is not provided, or for any value
which doesn't
have a matching key here, the user-visible label will be the
option
's value
.
print menu( values => [1, 2], labels => { 1 => 'one'}, 2 => 'two'}, }, ); # will output <select name=""> <option name="1">one</option> <option name="2">two</option> </select>
option
tags. Like the labels
parameter, the keys should match
a value provided by the c<values> parameter.
Each value of this hash-ref should be a hash-ref representing the name and value of a HTML attribute.
print menu( values => ['one', 'two'], attributes => { one => {onSubmit => 'do(this);'}, two => {style => 'color: #000;'}, }, ); # will output <select name=""> <option onSubmit="do(this);" name="one">one</option> <option style="color: #000;" name="two">two</option> </select>
All parameters are optional, though it doesn't make much sense to not
provide anything for values
.
Any unrecognised parameters will be used to provide extra HTML
attributes for the select
tag. For example:
print menu( id => 'myID', values => ['one'], onChange => 'do(this);', ); # will output <select name="" id="myID" onChange="do(this);"> <option name="one">one</option> </select>
options()
Use options()
to generate the HTML for only the option
tags,
allowing you to keep the outer select
tag in the template, so that,
for example, a designer can easily make changes to the CSS or
JavaScript handlers.
You would have something like the following in your template:
<select name="day"> <TMPL_VAR menu_options> </select>
options()
accepts the same parameters as menu(), but the name
parameter is ignored.
popup_menu()
popup_menu()
is an alias for menu() for those familiar with
CGI.
Please log bugs, feature requests and patch submissions at http://sourceforge.net/projects/html-menu.
Support mailing list: html-menu-users@lists.sourceforge.net
HTML::Menu::DateTime, HTML::Template, Template, Template::Magic, DateTime::Locale.
Carl Franks <cpan@fireartist.com>
Copyright 2005, Carl Franks. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Licenses are in the files ``Artistic'' and ``Copying'' in this distribution.