Data-MuForm
view release on metacpan or search on metacpan
lib/Data/MuForm/Renderer/Base.pm view on Meta::CPAN
package Data::MuForm::Renderer::Base;
# ABSTRACT: Renderer
use Moo;
use List::Util ('any');
use Scalar::Util ('weaken');
has 'form' => ( is => 'ro', weak_ref => 1 );
has 'localizer' => ( is => 'ro' );
has 'standard_layout' => ( is => 'rw', default => 'lbl_ele_err' );
has 'cb_layout' => ( is => 'rw', default => 'cbwrlr' );
has 'rdgo_layout' => ( is => 'rw', default => 'labels_right' );
has 'cbgo_layout' => ( is => 'rw', default => 'labels_right' );
has 'display_layout' => ( is => 'rw', default => 'span' );
has 'field_wrapper' => ( is => 'rw', default => 'simple' );
has 'wrapper_tag' => ( is => 'rw', default => 'div' );
has 'error_tag' => ( is => 'rw', default => 'span' );
has 'error_class' => ( is => 'rw', default => 'error_message' );
has 'render_element_errors' => ( is => 'rw', default => 0 );
has 'is_html5' => ( is => 'rw', default => 0 );
sub BUILD {
my $self = shift;
if ( $self->form ) {
weaken($self->{localizer});
}
}
sub render_hook {
my $self = shift;
return $self->form->render_hook($self, @_);
}
sub localize {
my ( $self, @message ) = @_;
return $self->localizer->loc_($message[0]);
}
#==============================
# Forms
#==============================
sub render_form {
my ($self, $rargs, $fields ) = @_;
my $out = '';
$out .= $self->render_start($rargs);
$out .= $self->render_form_errors($rargs);
foreach my $field ( @$fields ) {
$out .= $field->render;
}
$out .= $self->render_end($rargs);
return $out;
}
sub render_start {
my ($self, $rargs ) = @_;
my $name = $rargs->{name};
my $method = $rargs->{method};
my $out = qq{<form };
$out .= qq{id="$name" };
$out .= process_attrs($rargs->{form_attr}, ['id','name']);
$out .= q{>};
}
sub render_end {
my ($self, $rargs ) = @_;
return q{</form>};
}
sub render_form_errors {
my ( $self, $rargs ) = @_;
my $out = '';
if ( scalar @{$rargs->{form_errors}} ) {
$out .= q{<div class="form_errors>};
my $error_tag = $rargs->{error_tag} || $self->error_tag;
my $error_class = $rargs->{error_class} || $self->error_class;
foreach my $error ( @{$rargs->{form_errors}} ) {
$out .= qq{\n<$error_tag class="$error_class">$error</$error_tag>};
}
( run in 1.508 second using v1.01-cache-2.11-cpan-39bf76dae61 )