I wrote and use Form::Processor.<br><br>I have used a number of modules for validation. Most were about specifying forms via a config file and rendering HTML markup. I really like Rose::HTML::Objects, but found myself customizing it to
the point where I realized I should just start from scratch.<br><br>I was less interested in rendering mark up. That's pretty easy anyway, and I also need custom markup more often than not so the automatic rendering never quite worked for me. <br>
<br>I was more interested in the other side -- where the data comes and goes from the store (mostly database). So, Form::Processor can work with ORMs, for example, to automatically populate lookup lists and update many-to-many relationships.<br>
<br>I also need more than config-based validation parameters. In Form::Processor fields and forms are classes. So adding new custom fields is easy, and forms can contain methods to do much more complex things than can be done with config-based forms. And, of course, forms can inherit from other forms as can fields.<br>
<br>I was also interested in removing much of the code I felt I was repeating often in controllers. For an example see:<br><br><a href="http://search.cpan.org/~hank/Catalyst-Plugin-Form-Processor-0.06/lib/Catalyst/Plugin/Form/Processor.pm">http://search.cpan.org/~hank/Catalyst-Plugin-Form-Processor-0.06/lib/Catalyst/Plugin/Form/Processor.pm</a><br>
<br>There's two or three "model" classes for Form::Processor -- they basically interface with a specific ORM. I used Class::DBI quite a bit so that's the one I wrote. Gerda Shank wrote one for DBIx::Class. I'm using a customized verion of the DBIx::Class one now -- the one Gerda wrote tries to cover more situations but as a result has some bugs.<br>
<br>Gerda also attempted to rewrite Form::Processor using Moose instead of Rose::Object. I could never get it to pass my test suite and didn' t have time to work on it. So, Gerda released HTML::FormHandler which is based on Form::Processor. I've been meaning to try it with a project some day soon. I'd recommend trying it.<br>
<br><br><br>-- <br>Bill Moseley<br><a href="mailto:moseley@hank.org">moseley@hank.org</a><br>