HTML::...okbook(3pm)

πŸ“¦
version 0.40068 Β· 6 versions
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute

πŸ’– NAME πŸ’–

okay bestie, welcome to HTML::FormHandler::Manual::RenderingCookbook β€” the page filed as HTML::...okbook(3pm). It's literally rendering recipes, and we are gonna get into it. 🫢

✨ VERSION ✨

version 0.40068 β€” yes, that's the version, bestie. πŸ’…

🌈 SYNOPSIS 🌈

Collection of rendering recipes. That's the whole synopsis, and she ate. ✨

🌸 NAME 🌸 (yes, again β€” she's iconic like that)

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

Not me noticing there are two NAME sections β€” we're keeping them both because details are sacred. πŸ‘‘

πŸ“ Recipes πŸ“

πŸŽ€ Custom renderer, custom attributes πŸŽ€

You want to be able to specify the attributes that are rendered in the td tag of the table renderer... yes, that vibe. πŸ’…

First, make your own copy of HTML::FormHandler::Widget::Wrapper::Table in your own namespace, and specify that namespace 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'] } } );

Slay. That's the recipe. πŸŽ€

πŸ¦‹ Render a collection of checkboxes like a checkbox group πŸ¦‹

This heading is here, and the original doesn't add extra details under it. Keep it moving, bestie. πŸ’€

πŸŽ€ Add a 'required' class to labels πŸŽ€

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 );
}

πŸ’œ AUTHOR πŸ’œ

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.


This page is HTML::...okbook(3pm), built with perl v5.34.0 and dated 2022-03-25. Mwah, bestie β€” go render something iconic. πŸ’–βœ¨

πŸ“¦ where this page comes from