The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

HTML::FormHandler::Manual::Templates - using templates

SYNOPSIS

Documentation on templates to use with HTML::FormHandler

In progress...

Using templates

There are lots of different ways to set up templates. One way is to create a 'widget' directory, and store template snippets there.

You can use the default 'widget' for the field class, or set the 'widget' for the field in your form:

   fields => [
      my_special_field => {
         type => 'Text',
         widget => 'my_special_widget',
      },
      my_second_field => {
         type => 'Text',
         widget => 'yet_another_widget',
      },
   ]

And include them in a generic template:

   [% PROCESS widget/form_start.tt %]

   [% FOREACH f in form.sorted_fields %]
      [% PROCESS widget/${f.widget}.tt %]
   [% END %]

   [% PROCESS widget/form_end.tt %]

Sample templates

Text input field with error class on div & error messages

   <div class="[% f.css_class %] [% IF f.has_errors %]error_fld[% END %]">
   [% IF f.has_errors %]
     [% FOR error IN f.errors %]
       <p><span class="error" id="error">[% error %] </span></p>
     [% END %]
   [% END %]
   <label class="label" for="[% f.name %]">[% f.label %]</label>
   <input type="text" name="[% f.name %]" id="[% f.name %]" value="[% f.fif %]">
   </div>

Select field

Single select:

   <label class="label" for="[% f.name %]">[% f.label %]</label>
   <select name="[% f.name %]">
     [% FOR option IN f.options %]
       <option value="[% option.value %]" 
       [% IF option.value == f.fif %]
          selected="selected"
       [% END %]>
       [% option.label %]</option>
     [% END %] 
   </select>

Multiple select:

   <label class="label" for="[% f.name %]">[% f.label || f.name %]</label>
   <select name="[% f.name %]" multiple="multiple" size="5">
     [% FOR option IN f.options %]
       <option value="[% option.value %]" 
       [% FOREACH optval IN f.value %]
          [% IF optval == option.value %]
             selected="selected"
          [% END %]
       [% END %]>
       [% option.label %]</option>
     [% END %] 
   </select>

Checkbox

  <input type="checkbox" name="[% f.name %]" value="1"
      [% IF f.fif == 1 %] checked="checked"[% END %] />

AUTHOR

Gerda Shank, gshank@cpan.org

COPYRIGHT

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.