Peter Karman wrote: > > Quinn Weaver scribbled on 4/3/07 12:40 PM: > > > If so, will FormFu be compatible with Rose::DB::Object, or will it be > > tied to DBIC? (I know the Rose framework has its own way of handling > > forms, but I like FormFu better because of its clean separation of > > concerns.) > > > > Any words of wisdom from the FormFu masters? :) > > I'm no master, nor have I looked at FormFu. However, I'd suggest you look at > the > Catalyst::Controller::Rose stuff I posted to CPAN last week:
I have, and I'm using it now, but not the parts that are tied to RHTMLO. I agree that Catalyst::Controller::Rose::CRUD is a good place to start this. I was just hoping that maybe the FormFu people were already doing that work for me. ;) > That said, what exactly is it about RHTMLO that strikes you as less than a > "clear separation of concerns"? Well, it doesn't let you construct the form piece-by-piece in your TT template the way Catalyst::Controller::FormBuilder and CGI::FormBuilder do (see the FormBuilder POD extract at the end of this post). In contrast to FormBuilder, RHTMLO wants you to write your HTML form by calling Perl methods, somewhat in the spirit of CGI.pm. This makes it hard for design people to edit the form. (I use FormBuilder as an example because HTML::FormFu, as I understand it, will follow a similar model. This post seems to confirm that: http://lists.rawmode.org/pipermail/html-widget/2007-March/000517.html .) Also, Catalyst::Controller::FormBuilder accepts YAML as input, whereas RHTMLO depends on Perl. (Again, see below for a sample.) YMMV, but the design people here are relatively comfortable editing YAML and quite uncomfortable editing Perl code. So those are, to me, cases of sub-optimal separation of concerns. On the other hand, I guess it is possible with RHTMLO to take the generated (X)HTML and plunk it into a TT template. The rest of the template is still editable by your XHTML/CSS/Javascript design people. This does mean, however, that the design people have to come to you, the programmer, if they want changes to the form--e.g. if they want to change the contents of a <div> or, if, in plain HTML land, they want to change the type of an <input>. (Obviously the problem is ameliorated in XHTML, since they can change some stuff using CSS.) You can imagine the same thing happening for form-related Javascript. Well... As you can see, my main goal is to support the common division of labor between XHTML (etc.) design and back-end coding. That's what I have in mind when I think separation of concerns. I'm still searching for the right solution, but RHTMLO seems a little worse in this department than FormBuilder. Or am I missing something? =) Maybe with clean XHTML it doesn't matter. Maybe. I'm slated soon to run this idea by my client's design people and see what they think. Many thanks for your input so far, and for posting your Rose/Catalyst modules. :) *********************************** Sample YAML for a Catalyst::Controller::FormBuilder form: name: foo_update fields: name: label: Name type: text size: 50 required: 1 description: label: Descriptive Text for the Foo rows: 5 cols: 76 required: 1 submit: Update Foo *********************************** Snippet from Catalyst::Controller::FormBuilder POD: From within your template, you can reference any of FormBuilder methods to manipulate form HTML, JavaScript, and so forth. For example, you might want exact control over fields, rendering them in a "<div>" instead of a table. You could do something like this: <!-- root/src/books/edit.tt --> <head> <title>[% formbuilder.title %]</title> [% formbuilder.jshead %]<!-- javascript --> </head> <body> [% formbuilder.start -%] <div id="form"> [% FOREACH field IN formbuilder.fields -%] <p> <label> <span [% IF field.required %]class="required"[%END%]>[%field.label%]</span> </label> [% field.field %] [% IF field.invalid -%] <span class="error"> Missing or invalid entry, please try again. </span> [% END %] </p> [% END %] <div id="submit">[% formbuilder.submit %]</div> <div id="reset">[% formbuilder.reset %]</div> </div> </div> [% formbuilder.end -%] </body> -- Quinn Weaver, independent contractor | President, San Francisco Perl Mongers http://fairpath.com/quinn/resume/ | http://sf.pm.org/ _______________________________________________ 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/
