On Sun, Jan 23, 2005 at 02:40:57PM +0000, Dave Howorth wrote:
>
> and I'm too lazy to compare the source, so if someone
> >could point it out to me, I'd be grateful. In most of my
> >other apps I override do_edit to use Data::FormValidator
> >instead, but I was trying to keep this simple, because I don't
> >actually have any validation needs.
>
> I'm interested to try Data::FormValidator with Maypole as well. Yours is
> the first posting I've seen from somebody who's tried it. Would you mind
> posting some code (your do_edit?) and/or sharing your experience?
It's incredibly simple, and pretty much drops right in place in
Maypole, with the DFV profile and the needed changes in do_edit.
In my driver class, I have something like:
---
SlangDB->config->{slangbiblio}{dfv_profile} =
{
optional => [qw /author title pub_date pub_location format pages publisher bib_author bib_source bib_date dib_info holding_lib shelfmark type category status brief_description description last_modified_by/],
required => [qw /title/],
constraints => {
format => qr/^\d+$/,
type => qr/^\d+$/,
category => qr/^\d+$/,
status => qr/^\d+$/,
},
filters => 'trim',
missing_optional_valid => 1,
};
---
(Here the constraints are all to foreign keys for other tables; I don't
have any real constraints, but you get the idea.)
Then, I change bits of do_edit like so (I can't quickly show you
the whole thing, because I've mucked with parts of it for other
reasons, but it should be obvious):
---
my $results = Data::FormValidator->check($r->{params}, $r->{config}{$r->{table}}{dfv_profile});
if ($results->has_invalid or $results->has_missing) {
my $errors = $results->msgs;
# Set it up as it was:
$r->{template_args}{cgi_params} = $r->{params};
$r->{template_args}{errors} = $errors;
$r->{template} = "edit";
} else {
my %valid_params = %{$results->valid};
if ($obj) {
# We have something to edit
$obj->set(%valid_params);
$obj->update;
} else { # new record
$obj = $self->create(\%valid_params);
$creating++;
}
$r->{template} = "view";
}
---
And that's pretty much it. Works like a charm.
HTH.
Best,
Jesse
_______________________________________________
maypole mailing list
maypole at lists.netthink.co.uk
http://lists.netthink.co.uk/listinfo/maypole
This archive was generated by hypermail 2.1.3 : Thu Feb 24 2005 - 22:25:57 GMT