For those how are interested how to create a validation modul in connection with catalyst I post a modul which can validate a form against data in a DBIx::Class model.
I define the validator in yaml like this: validator: - type: +glue::HTML::FormFu::Validator::DBIxClassModel name: name model: 'glueDB::Contact::Company' match_params: [ name ] negative_match_params: [ id ] load_params_from_request: [ id ] max_found: 0 The class looks like this: ----------------------------------------------------------------------------- package glue::HTML::FormFu::Validator::DBIxClassModel; use strict; use warnings; use base 'HTML::FormFu::Validator'; #use Data::Dumper; __PACKAGE__->mk_accessors( qw/ load_params_from_request model match_params max_found negative_match_params / ); sub new { my $self = shift->SUPER::new(@_); # $self->form->add_localize_object( 'glue::HTML::FormFu::Validator::DBIxClassModel::I18N' ); # default error name: # form_glue_html_formfu_validator_dbixclassmodel_error return $self; } sub validate_value { my ( $self, $value, $params ) = @_; my $model; my $i = 0; my $argument_params = {}; my $resultset; my $match = {}; my $max = $self->max_found || 0; my $ok; return 1 if !defined $value || $value eq ''; # check model name $self->model or die "Model not named - Need model name for DB check."; # check Catalyst context $self->form->{stash}->{context} or die "Catalyst context not available."; # check for valid model $model = $self->form->{stash}->{context}->model( $self->model ) or die "Model not defined - DB check failed for model '". $self->model. "'."; # get parameters from request foreach my $param (@{$self->load_params_from_request || []}) { $argument_params->{$param} = $self->form->{stash}->{context}->request->arguments->[$i]; $i++; } # prepare hash for search operation in model foreach my $param (@{$self->match_params || []}) { $match->{$param} = $params->{$param} if exists $params->{$param}; $match->{$param} = $argument_params->{$param} if exists $argument_params->{$param}; } foreach my $param (@{$self->negative_match_params || []}) { $match->{$param} = { '!=', $params->{$param} } if exists $params->{$param}; $match->{$param} = { '!=', $argument_params->{$param} } if exists $argument_params->{$param}; } #warn Dumper ($match); # create resultset $resultset = $model->search( $match ) or die "No resultset defined - DB check failed for model '". $self->model. "'."; #warn "cnt: ". $resultset->count." max:". $max; # validate $ok = $resultset->count <= $max; return $ok; } 1; ----------------------------------------------------------------------------- Have fun, Mario _______________________________________________ Html-widget mailing list Html-widget@lists.rawmode.org http://lists.rawmode.org/cgi-bin/mailman/listinfo/html-widget