package HTML::FormHandler::Render::Table; # ABSTRACT: render a form with a table layout $HTML::FormHandler::Render::Table::VERSION = '0.40068'; use Moose::Role; with 'HTML::FormHandler::Render::Simple' => { -excludes => [ 'render', 'wrap_field', 'render_end', 'render_start' ] }; use HTML::FormHandler::Render::Util ('process_attrs'); sub render { my $self = shift; my $output = $self->render_start; $output .= $self->render_form_errors; foreach my $field ( $self->sorted_fields ) { $output .= $self->render_field($field); } $output .= $self->render_end; return $output; } sub render_start { my $self = shift; my $attrs = process_attrs($self->attributes); return qq{}; } sub render_form_errors { my $self = shift; return '' unless $self->has_form_errors; my $output = "\n"; return $output; } sub render_end { my $self = shift; my $output .= "
"; $output .= qq{\n$_} for $self->all_form_errors; $output .= "\n
\n"; $output .= "\n"; return $output; } sub wrap_field { my ( $self, $field, $rendered_field ) = @_; my $attrs = process_attrs($field->wrapper_attributes); my $output = qq{\n}; my $l_type = $field->widget eq 'Compound' ? 'legend' : 'label'; if ( $l_type eq 'label' ) { $output .= '' . $self->render_label($field) . ''; } elsif ( $l_type eq 'legend' ) { $output .= '' . $self->render_label($field) . ''; } if ( $l_type ne 'legend' ) { $output .= ''; } $output .= $rendered_field; $output .= qq{\n$_} for $field->all_errors; if ( $l_type ne 'legend' ) { $output .= "\n"; } return $output; } use namespace::autoclean; 1; __END__ =pod =encoding UTF-8 =head1 NAME HTML::FormHandler::Render::Table - render a form with a table layout =head1 VERSION version 0.40068 =head1 SYNOPSIS Include this role in a form: package MyApp::Form::User; use Moose; with 'HTML::FormHandler::Render::Table'; Use in a template: [% form.render %] =head1 AUTHOR FormHandler Contributors - see HTML::FormHandler =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2017 by Gerda Shank. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut