perleager has asked for the wisdom of the Perl Monks concerning the following question:

Hey,

I just started using this module (Data::Formvalidator) to carry out my form validation. For those experienced using this, have you ever validated a phone number that had three input fields? - -

I looked in the Data::FormValidator::Contraints referrence page and all I came up to try was this:

require_some => { # require any two fields from this group city_or_state_or_zipcode => [ 2, qw/city state zipcode/ ], } So I tried doing: require_some => { # require any two fields from this group american_phone => [ 2, qw/p1 p2 p3/ ], #the input field names are +p1 p2 p3, american_phone is the constraint name. }
I've also tried this the reversed way where constraint, american_phone is the key.

Inside the form profile, I tried placing this code inside the constraint hash, a separate hash, and inside the required hash.

Any help is appreciated. If there is no other way to do this, I might just try making a custom constraint and verifying each input filed, p1 p2 p3.

Thanks,
Anthony

Replies are listed 'Best First'.
Re: using Data::FormValidator to validate phone numbers
by jweed (Chaplain) on Mar 17, 2004 at 06:03 UTC
    Well, I am anything but an experienced Data::FormValidator user, but I'll give it a whirl. I'm not sure why you only required 2 field, so I changed it to require all.


    use Number::Phone::US qw(is_valid_number); #Format is easier to work + with than the simple constraints version my $profile = { required => [qw( p1 p2 p3 )], constraints => { p1 => { constraint => sub { my $val .= "$_-" for @_; chop $va +l; is_valid_number($val)}, params => [ qw( p1 p2 p3 ) ], }, }
    Feels ugly, and I haven't really worked with this module before. As always, YMMV.



    Code is (almost) always untested.
    http://www.justicepoetic.net/