| Form-Factory documentation | Contained in the Form-Factory distribution. |
Form::Factory::Control::SelectMany - the multi-select control
version 0.020
has_control pick_some => (
control => 'select_many',
options => {
label => 'Just select some of these already...",
available_choices => [
Form::Factory::Control::Choice->new('one');
Form::Factory::Control::Choice->new('two');
Form::Factory::Control::Choice->new('three');
],
default_selected_choices => [ qw( one three ) ],
},
);
A select many can be displayed as a multi-select list box or a list of checkboxes.
This control implements Form::Factory::Control, Form::Factory::Control::Role::AvailableChoices, Form::Factory::Control::Role::Labeled, Form::Factory::Control::Role::ListValue.
This is a synonym for current_value.
This is a synonym for value.
This is a synonyms for has_selected_choices.
This is a synonym for default_value.
This is a synonym for has_default_selected_choices.
for my $choice (@{ $self->available_choices }) {
if ($control->is_choice_selected($choice)) {
# ...
}
}
This is a helper that is useful while iterating over the available choices in deciding which have been selected.
It has a current value if one or more values are selected.
Andrew Sterling Hanenkamp <hanenkamp@cpan.org>
Copyright 2009 Qubling Software LLC.
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
| Form-Factory documentation | Contained in the Form-Factory distribution. |
package Form::Factory::Control::SelectMany; BEGIN { $Form::Factory::Control::SelectMany::VERSION = '0.020'; } use Moose; with qw( Form::Factory::Control Form::Factory::Control::Role::AvailableChoices Form::Factory::Control::Role::Labeled Form::Factory::Control::Role::ListValue ); use List::MoreUtils qw( any );
has '+value' => ( isa => 'ArrayRef[Str]', ); has '+default_value' => ( isa => 'ArrayRef[Str]', default => sub { [] }, );
sub current_values { shift->current_value(@_) }
sub selected_choices { shift->value(@_) } sub has_selected_choices { shift->has_value(@_) }
sub default_selected_choices { shift->default_value(@_) } sub has_default_selected_choices { shift->has_default_value(@_) }
sub is_choice_selected { my ($self, $choice) = @_; return any { $_ eq $choice->value } @{ $self->current_values }; }
around has_current_value => sub { my $next = shift; my $self = shift; return ($self->has_value || $self->has_default_value) && scalar(@{ $self->current_value }) > 0; };
1;