=cut
use Class::C3;
-use Maypole::Config;
use Data::FormValidator;
+use Data::Dumper;
+
+use Maypole::Config;
use Maypole::Model::CDBI::AsForm;
-use base qw(Maypole::Model::Base);
+use base qw(Maypole::Model::CDBI::Base);
Maypole::Config->mk_accessors(qw(table_to_class _COLUMN_INFO));
sub setup_database {
my ( $self, $config, $namespace, $classes ) = @_;
$config->{classes} = $classes;
- foreach my $class (@$classes) { $namespace->load_model_subclass($class); }
+ foreach my $class (@$classes) {
+ $namespace->load_model_subclass($class);
+ }
$namespace->model_classes_loaded(1);
$config->{table_to_class} = { map { $_->table => $_ } @$classes };
$config->{tables} = [ keys %{ $config->{table_to_class} } ];
}
}
+=head2 check_params
+
+ Checks parameters against the DFV profile for the class, returns the results
+ of DFV's check.
+
+ my $dfv_results = __PACKAGE__->check_params($r->params);
+
+=cut
+
+sub check_params {
+ my ($class,$params) = @_;
+ return Data::FormValidator->check($params, $class->dfv_profile);
+}
+
+
=head1 Action Methods
Action methods are methods that are accessed through web (or other public) interface.
return;
}
- my $required_cols = $class->required_columns;
my $errors;
if ($obj) {
($obj,$errors) = $class->_do_update($r,$obj);
$obj->set( %$this_class_params );
$obj->update;
}
-
+
return ($obj,$errors);
}
my ($class,$r) = @_;
my $errors;
my $this_class_params = { map { $_ => $r->{params}{$_} } $class->columns };
- my $obj = eval { My::DBI->create( $this_class_params ) };
+ my $obj;
- my $dfv_results = ($obj) ? undef : $class->dfv_results->msgs ;
-
- # handle dfv errors
- if ( $dfv_results->has_missing ) { # missing fields
- foreach my $field ( $dfv_results->missing ) {
- $errors->{$field} = "$field is required";
+ my $dfv_results = Data::FormValidator->check($r->{params}, $class->dfv_profile);
+ if ($dfv_results->success) {
+ $obj = $class->create($this_class_params);
+ } else {
+ # handle dfv errors
+ if ( $dfv_results->has_missing ) { # missing fields
+ foreach my $field ( $dfv_results->missing ) {
+ $errors->{$field} = "$field is required";
+ }
}
- }
- if ( $dfv_results->has_invalid ) { # Print the name of invalid fields
- foreach my $field ( $dfv_results->invalid ) {
- $errors->{$field} = "$field is invalid: " . $dfv_results->invalid( $field );
+ if ( $dfv_results->has_invalid ) { # Print the name of invalid fields
+ foreach my $field ( $dfv_results->invalid ) {
+ $errors->{$field} = "$field is invalid: " . $dfv_results->invalid( $field );
+ }
}
}
# update with required columns from DFV Profile
my $profile = $class->dfv_profile;
- $class->required_columns(@{$profile->{required}});
+ $class->required_columns($profile->{required});
return $class->COLUMN_INFO;
}