$HTML::FormHandler::Field::Text::VERSION
=
'0.40068'
;
has
'size'
=> (
isa
=>
'Int|Undef'
,
is
=>
'rw'
,
default
=>
'0'
);
has
'maxlength'
=> (
isa
=>
'Int|Undef'
,
is
=>
'rw'
);
has
'maxlength_message'
=> (
isa
=>
'Str'
,
is
=>
'rw'
,
default
=>
'Field should not exceed [quant,_1,character]. You entered [_2]'
,
);
has
'minlength'
=> (
isa
=>
'Int|Undef'
,
is
=>
'rw'
,
default
=>
'0'
);
has
'minlength_message'
=> (
isa
=>
'Str'
,
is
=>
'rw'
,
default
=>
'Field must be at least [quant,_1,character]. You entered [_2]'
);
has
'+widget'
=> (
default
=>
'Text'
);
our
$class_messages
= {
'text_maxlength'
=>
'Field should not exceed [quant,_1,character]. You entered [_2]'
,
'text_minlength'
=>
'Field must be at least [quant,_1,character]. You entered [_2]'
,
'multiple_values_disallowed'
=>
'Field must contain a single value'
,
};
sub
get_class_messages {
my
$self
=
shift
;
my
$messages
= {
%{
$self
->
next
::method },
%$class_messages
,
};
$messages
->{text_minlength} =
$self
->minlength_message
if
$self
->minlength_message;
$messages
->{text_maxlength} =
$self
->maxlength_message
if
$self
->maxlength_message;
return
$messages
;
}
sub
_inner_validate_field {
my
$self
=
shift
;
if
(
ref
$self
->value eq
'ARRAY'
) {
return
$self
->add_error(
$self
->get_message(
'multiple_values_disallowed'
),
);
}
}
sub
validate {
my
$field
=
shift
;
return
unless
$field
->
next
::method;
my
$value
=
$field
->value;
if
(
my
$maxlength
=
$field
->maxlength ) {
return
$field
->add_error(
$field
->get_message(
'text_maxlength'
),
$maxlength
,
length
$value
,
$field
->loc_label )
if
length
$value
>
$maxlength
;
}
if
(
my
$minlength
=
$field
->minlength ) {
return
$field
->add_error(
$field
->get_message(
'text_minlength'
),
$minlength
,
length
$value
,
$field
->loc_label )
if
length
$value
<
$minlength
;
}
return
1;
}
__PACKAGE__->meta->make_immutable;
1;