DOKK / manpages / debian 12 / libhtml-formhandler-perl / HTML::FormHandler::Manual::RenderingCookbook.3pm.en
HTML::FormHandler::Manual::RenderingCookbook(3pm) User Contributed Perl Documentation HTML::FormHandler::Manual::RenderingCookbook(3pm)

HTML::FormHandler::Manual::RenderingCookbook - rendering recipes

version 0.40068

Collection of rendering recipes

HTML::FormHandler::Manual::Rendering::Cookbook

You want to be able to specify the attributes that are rendered in the 'td' tag of the table renderer...

First make your own copy of 'HTML::FormHandler::Widget::Wrapper::Table, in your own name space, and specify that name space in the 'widget_name_space' for the form.

Change this line in the Table wrapper:

    $output .= '<td>' . $self->do_render_label($result) . '</td>';

to this:

    my $td_attr = process_attrs($self->get_tag('td_attr') || {} );
    $output .= "<td$td_attr>" . $self->do_render_label($result) . '</td>';

Now you can specify the attributes for the 'td' tag on a field:

    has_field 'foo' => ( tags => { td_attr => { class => ['emph', 'label'] } } );

Create a custom widget wrapper:

    package MyApp::Form::Widget::Wrapper::CustomLabel;
    use Moose::Role;
    with 'HTML::FormHandler::Widget::Wrapper::Simple';
    sub render_label {
        my ($self) = @_;
        return '<label class="label' . ($self->required ?
            ' required' : '') .  '" for="' . $self->id . '">' .
                 $self->html_filter($self->loc_label) . ':
            </label>';
    }

Or enable html5 output which adds a 'required' attribute.

Or use the 'html_attributes' callback:

    <in a form>
    sub html_attributes {
        my ( $self, $field, $type, $attr ) = @_;
        push @{$attr->{class}}, 'required'
            if ( $type eq 'label' && $field->required );
    }

FormHandler Contributors - see HTML::FormHandler

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.

2022-03-25 perl v5.34.0