| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
HTML::FormFu::Element::Checkbox - Checkbox form field
my $e = $form->element( Checkbox => 'foo' );
Checkbox form field.
Default Value: 1
Inherited. See default_empty_value in HTML::FormFu::Element::_Field for details.
Overrides the default value, so it's true.
Is a sub-class of, and inherits methods from HTML::FormFu::Element::_Input, HTML::FormFu::Element::_Field, HTML::FormFu::Element
Carl Franks, cfranks@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
package HTML::FormFu::Element::Checkbox; use Moose; extends 'HTML::FormFu::Element'; with 'HTML::FormFu::Role::Element::Input'; use HTML::FormFu::Constants qw( $EMPTY_STR ); __PACKAGE__->mk_output_accessors(qw( default )); after BUILD => sub { my ( $self, $args ) = @_; $self->field_type( 'checkbox' ); $self->reverse_multi( 1 ); $self->value( 1 ); return; }; sub process_value { my ( $self, $input ) = @_; # ignore submitted input return $self->value; } sub prepare_attrs { my ( $self, $render ) = @_; my $form = $self->form; my $submitted = $form->submitted; my $default = $self->default; my $original = $self->value; my $value = defined $self->name ? $self->get_nested_hash_value( $form->input, $self->nested_name ) : undef; if ( $submitted && defined $value && defined $original && $value eq $original ) { $render->{attributes}{checked} = 'checked'; } elsif ($submitted && $self->retain_default && ( !defined $value || $value eq $EMPTY_STR ) ) { $render->{attributes}{checked} = 'checked'; } elsif ($submitted) { delete $render->{attributes}{checked}; } elsif ( defined $default && defined $original && $default eq $original ) { $render->{attributes}{checked} = 'checked'; } $self->SUPER::prepare_attrs($render); return; } __PACKAGE__->meta->make_immutable; 1; __END__