use strict;
package HTML::FormFu::Constraint::CallbackOnce;
$HTML::FormFu::Constraint::CallbackOnce::VERSION = '2.07';
# ABSTRACT: Code Callback Constraint
use Moose;
use MooseX::Attribute::Chained;
extends 'HTML::FormFu::Constraint';
has callback => ( is => 'rw', traits => ['Chained'] );
sub process {
my ( $self, $params ) = @_;
# check when condition
return if !$self->_process_when($params);
my $value = $self->get_nested_hash_value( $params, $self->nested_name );
my $callback = $self->callback || sub {1};
## no critic (ProhibitNoStrict);
no strict 'refs';
my $ok = eval { $callback->( $value, $params ) };
return $self->mk_errors(
{ pass => ( $@ or !$ok ) ? 0 : 1,
message => $@,
} );
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
HTML::FormFu::Constraint::CallbackOnce - Code Callback Constraint
=head1 VERSION
version 2.07
=head1 SYNOPSIS
$form->constraint({
type => 'CallbackOnce',
name => 'foo',
callback => \&sfoo,
);
sub foo {
my ( $value, $params ) = @_;
# return true or false
}
=head1 DESCRIPTION
Unlinke the L, this callback is only
called once, regardless of how many values are submitted.
The first argument passed to the callback is the submitted value for the
associated field; this may be a single value or an arrayref of value.
The second argument passed to the callback is a hashref of name/value pairs
for all input fields.
This constraint doesn't honour the C value.
=head1 METHODS
=head2 callback
Arguments: \&sub_ref
=head1 SEE ALSO
Is a sub-class of, and inherits methods from L
L
=head1 AUTHOR
Carl Franks C
=head1 LICENSE
This library is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.
=head1 AUTHOR
Carl Franks
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2018 by Carl Franks.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut