From: "Ian Docherty" <[EMAIL PROTECTED]>
> Putting these sort of constraints is the duty of either the database
> level (where they naturally go anyway) or perhaps in the business logic
> layer.
Right, constraints can come from both. I think the question is how to
communicate those contraints up the line, ultimately to the view. Which is what
you said below. :)
> My problem is finding a clean way of getting these constraints out of
> the Model and into the View so that I can generate meaningful error
> messages without hard-coding them in the templates.
I don't have the communication from layer to layer all worked out, but an
approach I've liked is to have errors (like constraint failures) communicated
with standard message identifiers and know data. For instance, failing length
of 'username' could propogate a message ID of ERR_USERNAME_LENGTH, and include
data in a list: [1, 16]. From there, the view would be able to pull messaging
based on language or other criteria and flesh it out with the data. In TT,
maybe something like:
[% IF field.messages %]
[% FOR m = field.messages %]
[% sprintf( get_text(m.id), @{m.data} ) %]
[% END %]
[% END %]
The English message for ERR_USERNAME_LENGTH might be:
Must be between %u and %u characters
> Perhaps I am expecting too much.
I don't think so. I've seen this done pretty well, but am finding it to be a
labor to get it all worked out under Catalyst.
btw, this general path isn't mine. I got it years ago, pre-catalyst, from
another Cat-list person: Mark Blythe.
---
Rodney Broom
_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/