package HTML::FormHandler::Field::Email; # ABSTRACT: validates email using Email::Valid $HTML::FormHandler::Field::Email::VERSION = '0.40068'; use HTML::FormHandler::Moose; extends 'HTML::FormHandler::Field::Text'; use Email::Valid; our $class_messages = { 'email_format' => 'Email should be of the format [_1]', }; has '+html5_type_attr' => ( default => 'email' ); has 'email_valid_params' => ( is => 'rw', isa => 'HashRef', ); has 'preserve_case' => ( is => 'rw', isa => 'Bool', ); sub get_class_messages { my $self = shift; return { %{ $self->next::method }, %$class_messages, } } apply( [ { transform => sub { my ( $value, $field ) = @_; return $value if $field->preserve_case; return lc( $value ); } }, { check => sub { my ( $value, $field ) = @_; my $checked = Email::Valid->address( %{ $field->email_valid_params || {} }, -address => $value, ); $field->value($checked) if $checked; }, message => sub { my ( $value, $field ) = @_; return [$field->get_message('email_format'), 'someuser@example.com']; }, } ] ); __PACKAGE__->meta->make_immutable; use namespace::autoclean; 1; __END__ =pod =encoding UTF-8 =head1 NAME HTML::FormHandler::Field::Email - validates email using Email::Valid =head1 VERSION version 0.40068 =head1 DESCRIPTION Validates that the input looks like an email address using L. Widget type is 'text'. If form has 'is_html5' flag active it will render instead of type="text" This field has an 'email_valid_params' attribute that accepts a hash reference of extra values passed to L when validating email addresses. If you want to preserve the case of the email address, set the 'preserve_case' attribute. =head1 DEPENDENCIES L =head1 AUTHOR FormHandler Contributors - see HTML::FormHandler =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2017 by Gerda Shank. 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