[Catalyst] Custom constraint subroutines no getting form value
using Catalyst::Plugin::FormValidator
kakimoto at tpg.com.au
kakimoto at tpg.com.au
Thu Apr 2 06:33:48 GMT 2009
Hi, guys,
I have been trying to create some custom constraints for my form
attributes. I use Catalyst::Plugin::FormValidator
when I call my custom subroutine that handles a custom constraint, I
notice it will not get the attribute value.
I have looked up the docs for
1) Data::FormValidator::Constraints
2) Catalyst::Plugin::FormValidator
and tutorial (Data::FormValidator::Tutorial )
and nothing seems to help.
Looking at the tutorial
(http://search.cpan.org/~purdy/Data-FormValidator-Tutorial-1.61/lib/Data/FormValidator/Tutorial.pm),
I decided to build my own constraint subroutines.
Here's what I refered to in the tute:
--------------- TUTE Extract Start ------------------------
...
'email' => \&my_domain_email(),
...
sub my_domain_email {
...
}
--------------- TUTE Extract End ------------------------
And this is what I implemented:
--------------- MyApp/Controller/User.pm Extract Start
----------------------
sub _get_validation_profile
{
my $required = [
qq{lc_abn},
qq{lc_company_name},
qq{mc_telephone},
qq{add_postcode},
qq{add_state},
qq{add_street},
qq{add_street_number},
qq{add_suburb},
qq{ba_postcode},
qq{ba_state},
qq{ba_street},
qq{ba_street_number},
qq{ba_suburb},
qq{lc_login_id},
qq{lc_password},
];
my $optional = [
qq{mc_email},
qq{mc_first_name},
qq{mc_last_name},
qq{mc_mobile},
];
my $defaults = {
qq{add_country} => 'Australia',
qq{ba_country} => 'Australia',
};
my $constraints= {
qq{mc_email} => email(),
qq{lc_abn} => FV_min_length(5),
qq{mc_telephone} => FV_min_length(9),
qq{add_postcode} =>gozila::Controller::Shared->FV_postcode,
qq{add_state} => gozila::Controller::Shared->FV_state,
qq{add_street} => FV_min_length(5),
qq{add_street_number} => sub { my $elem = shift; return ( $elem
=~ m{\w+} ? 1 : 0 ); },
qq{add_suburb} => FV_min_length(2),
qq{ba_postcode} => gozila::Controller::Shared->FV_postcode,
qq{ba_state} => gozila::Controller::Shared->FV_state,
qq{ba_street} => FV_min_length(5),
qq{ba_street_number} => sub { my $elem = shift; return ( $elem
=~ m{\w+} ? 1 : 0 ); },
qq{ba_suburb} => FV_min_length(2),
qq{lc_login_id} => FV_min_length(5),
qq{lc_password} => FV_min_length(5),
};
return {
'required' => $required,
'optional' => $optional,
'defaults' => $defaults,
'constraints' => $constraints,
};
}
--------------- MyApp/Controller/User.pm Extract End
------------------------
--------------- MyApp/Controller/Shared.pm Extract Start
--------------------
sub FV_postcode
{
my ($self, $given_postcode) = @_;
Line: 100 return ( $given_postcode >= 200 ? 1 : 0 );
}
sub FV_state
{
my ($self, $given_state) = @_;
Line: 106 return ( $given_state =~
m{^(VIC|ACT|NSW|TAS|WA|SA|NT|QLD)$}smx ? 1 : 0 );
}
--------------- MyApp/Controller/Shared.pm Extract End
----------------------
the fault here is that I get the error listed below which means that the
subroutines which I have defined are not getting anything...
Use of uninitialized value in numeric ge (>=) at
/home/kakimoto/projects/myApp/t/../lib/myApp/Controller/Shared.pm line 100.
Use of uninitialized value in pattern match (m//) at
/home/kakimoto/projects/myApp/t/../lib/myApp/Controller/Shared.pm line 106.
Use of uninitialized value in numeric ge (>=) at
/home/kakimoto/projects/myApp/t/../lib/myApp/Controller/Shared.pm line 100.
Use of uninitialized value in pattern match (m//) at
/home/kakimoto/projects/myApp/t/../lib/myApp/Controller/Shared.pm line 106.
Any ideas?
Thank you:)
More information about the Catalyst
mailing list