| Form-Processor documentation | Contained in the Form-Processor distribution. |
This options methods will re-arrange the opitions list to display the currently selected items on top.
Form::Processor::Field::Multiple - Select one or more options
See Form::Processor
This inherits from the Select field, which just provides options. and sets the "multiple" flag true to accept multiple options. If a field inherits from Select but you want to use it as a multiple select then just define the file as such.
This also will arrange the currently selected items to the top of the list.
Fields can be given a widget type that is used as a hint for the code that renders the field.
This field's widget type is: "select".
Fields may inherit from other fields. This field inherits from: "Select".
Bill Moseley
See Form::Processor for copyright.
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
Form::Processor is free software and is provided WITHOUT WARRANTY OF ANY KIND. Users are expected to review software for fitness and usability.
| Form-Processor documentation | Contained in the Form-Processor distribution. |
package Form::Processor::Field::Multiple; use strict; use warnings; use base 'Form::Processor::Field::Select'; our $VERSION = '0.03'; sub init_multiple { 1 } # allow multiple values. sub init_size { 5 } # default to showing five items if showing in a select list.
sub options { my $self = shift; my @options = $self->SUPER::options( @_ ); my $value = $self->value; # This places the currently selected options at the top of the list # Makes the drop down lists a bit nicer if ( @options && defined $value ) { my %selected = map { $_ => 1 } ref($value) eq 'ARRAY' ? @$value : ($value); my @out = grep { $selected{ $_->{value} } } @options; push @out, grep { !$selected{ $_->{value} } } @options; return wantarray ? @out : \@out; } return wantarray ? @options : \@options; }
1;