fork download
  1. package RV::Plugin::Validate;
  2. use Mojo::Base 'Mojolicious::Plugin';
  3. use common::sense;
  4.  
  5. my %VALIDATORS = (
  6. login_form => \&_validate_login_form,
  7. # ...
  8. );
  9.  
  10. sub register {
  11. my ($plugin, $app) = @_;
  12.  
  13. # clean value (only digit)
  14. $app->validator->add_filter( digit_only => sub {
  15. my ($vd, $name, $value) = @_;
  16. $value =~ s/[^0-9]+//g;
  17. return $value;
  18. }
  19. );
  20.  
  21. $app->validator->add_filter( double_pg => sub {
  22. my ($vd, $name, $value) = @_;
  23. $value =~ s/,/./g;
  24. return $value;
  25. }
  26. );
  27.  
  28. $app->helper( _validate_it => sub {
  29. my ($self, $form) = @_;
  30. my $v = $self->validation;
  31. my $out = $VALIDATORS{$form}($v);
  32. return $out;
  33. }
  34. );
  35. }
  36.  
  37. ###
  38. sub _validate_login_form {
  39. my $validation = shift;
  40. $validation->required('email');
  41. $validation->required('password');
  42. say for @{$validation->failed};
  43. return $validation;
  44. }
  45.  
  46. #...
  47.  
  48. 1;
  49.  
  50. ##
  51. package RV::Controller::Login;
  52. use Mojo::Base 'Mojolicious::Controller';
  53.  
  54. sub signin {
  55. my $s = shift;
  56.  
  57. my $validation = $s->_validate_it('login_form');
  58.  
  59. return $s->redirect_to('/') if $validation->has_error;
  60. # $vars is hashref with params
  61. my $vars = $validation->output;
  62. #... cut here ...
  63. }
  64.  
  65.  
Runtime error #stdin #stdout #stderr 0s 6056KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Can't locate Mojo/Base.pm in @INC (you may need to install the Mojo::Base module) (@INC contains: /etc/perl /usr/local/lib/i386-linux-gnu/perl/5.20.1 /usr/local/share/perl/5.20.1 /usr/lib/i386-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/i386-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at prog.pl line 2.
BEGIN failed--compilation aborted at prog.pl line 2.