package HTML::FormHandler::Widget::Form::Simple; # ABSTRACT: widget to render a form with divs $HTML::FormHandler::Widget::Form::Simple::VERSION = '0.40068'; use Moose::Role; use HTML::FormHandler::Render::Util ('process_attrs'); with 'HTML::FormHandler::Widget::Form::Role::HTMLAttributes'; sub renderx { my ($self, %args) = @_; if ( keys %args > 0 ) { while ( my ( $key, $value ) = each %args ) { confess "invalid attribute '$key' passed to renderx" unless $self->can($key); $self->$key($value); } } $self->render; } sub render { my ($self) = @_; my $result; my $form; # NOTE: do not use $self in this method; use $result or $form if ( $self->DOES('HTML::FormHandler::Result') ) { $result = $self; $form = $self->form; } else { $result = $self->result; $form = $self; } my $output = $form->render_start($result); $output .= $form->render_form_messages($result); if ( $form->has_render_list ) { foreach my $fb ( @{ $form->render_list } ) { # it's a Field if ( $form->field_in_index($fb) ) { # find field result and use that my $fld_result = $result->get_result($fb); # if no result, then we shouldn't be rendering this field next unless $fld_result; $output .= $fld_result->render; } # it's a Block else { # always use form level result for blocks my $block = $form->block($fb); die "found no form field or block named '$fb'\n" unless $block; $output .= $block->render($result); } } } else { foreach my $fld_result ( $result->results ) { $output .= $fld_result->render; } } $output .= $form->render_end($result); return $output; } sub render_start { my ( $self, $result ) = @_; $result ||= $self->result; my $output = ''; $output = $self->get_tag('before'); my $wtag = $self->get_tag('wrapper_tag') || 'fieldset'; # render wrapper start if not fieldset $output .= $self->render_wrapper_start($wtag, $result) if $wtag ne 'fieldset'; # render form tag my $attrs = process_attrs($self->attributes($result)); $output .= qq{
"; $output .= $self->render_wrapper_end($wtag) if $wtag ne 'fieldset'; $output .= $self->get_tag('after'); $output .= "\n"; return $output; } sub render_wrapper_end { my ( $self, $wrapper_tag ) = @_; return '' unless $self->do_form_wrapper; return qq{\n$wrapper_tag>}; } use namespace::autoclean; 1; __END__ =pod =encoding UTF-8 =head1 NAME HTML::FormHandler::Widget::Form::Simple - widget to render a form with divs =head1 VERSION version 0.40068 =head1 SYNOPSIS Role to apply to form objects to allow rendering. This rendering role is applied to HTML::FormHandler by default. It supports block rendering. (L