[dfv] Re: [cgiapp] name and 'err_' flags
Status: Inactive
Brought to you by:
markjugg
From: Cees H. <ce...@gm...> - 2005-07-18 17:35:14
|
Hi Michael, This is very similar to how I setup my error messages as well. I like them in the template, because I don't care what the message actually says, as that should be up to the designers. And I ran into the same issue as you with multiple constraints for a single parameter, so I ended up rolling my own solution that works pretty much exactly as C::A::P::VRM, except that it creates a multi-dimentional hash for multiple constraints. It usually looks something like this: errors =3D> { invalid =3D{ foo =3D> 1 bar =3D> { length =3D> 1, duplicate =3D> 1, }, }, missing =3D> { foobar =3D> 1 } }; This structure works really easily with Template Toolkit because of the magic dot notation: [% IF errors.invalid.bar %]There was a problem with bar[% END %] or I can get more details about what was actually wrong with bar: [% IF errors.invalid.bar.duplicate %]That bar already exists[% END %] It is a subtle difference from the way DFV builds the structure, but it is enough that I can't use C::A::P::VRM. I've tried to come up with ways to patch CAP::VRM or DFV to overcome this, but I haven't thought of anything worthwhile. So I guess to summarize this longwinded answer, I have the same issue, but I don't have an answer for you... Cheers, Cees On 7/18/05, Michael Peters <mp...@pl...> wrote: > Currently we use D::FV (with C::A::P::VRM) with msgs such that an error > msgs named 'err_foo' will be passed into the templates. Basically like th= is: >=20 > sub show_stuff { > my ($self, $error_msgs) =3D @_; > my $tmpl =3D $self->load_tmpl(...); > if( $error_msgs ) { > $tmpl->param(%$error_msgs); > } >=20 > return $tmpl->output(); > } >=20 >=20 > sub do_stuff { > my $self =3D shift; > my $profile =3D { > required =3D> [qw(foo blah)], > constraints =3D> { > foo =3D> qr/_foo$/, > }, > msgs =3D> { > prefix =3D> 'err_', > any_errors =3D> 'any_errors', > format =3D> '%s', > missing =3D> 1, > invalid =3D> 1, > invalid_seperator =3D> '', > }, > }; >=20 > This allows me to put the complete error message in the template and for > the 'err_foo' param to just be a flag (with a value of 1). This works > exactly like I want it to, but If I try to add multiple constraints on > the same value like so: >=20 > constraints =3D> { > blah =3D> [ > { > name =3D> 'ends_in_blah', > constraint =3D> qr/blah$/, > }, > { > name =3D> 'begins_with_blah', > constraint =3D> qr/^blah/, > } > ], > }, >=20 > I would like to get not only a flag named 'err_blah' but also a flag > named 'err_ends_in_blah' and/or 'err_begins_with_blah' so that my error > messages in my template can do the right thing based on which of the > multiple constraints failed. Is this a reasonable request? Is there a > workaround or another way to accomplish this? >=20 > -- > Michael Peters > Developer > Plus Three, LP >=20 >=20 > --------------------------------------------------------------------- > Web Archive: http://www.mail-archive.com/cg...@li.../ > http://marc.theaimsgroup.com/?l=3Dcgiapp&r=3D1&w=3D2 > To unsubscribe, e-mail: cgi...@li... > For additional commands, e-mail: cgi...@li... >=20 > |