Sorry for the repost, the address for the RDBO list was wrong. ----------------------------------------------------------------------
Hello lists, Since I haven't seen any work like this before (if I'm wrong please give me pointers!) I started to write a Catalyst Controller called "Catalyst::Controller::RHTMLO" to integrate RHTMLO (and a few bits of RDBO) to Catalyst the same way "Catalyst::Controller::FormBuilder" do. In fact my work is originally based on it. For the moment the only thing one can do with it is to define a form in YAML (or any config file recognized by "Config::Loader") and have it displayed in the template (TT2 for the moment, but others are planned). The module also defines, like the FormBuilder one, a 'Form' method attribute. The plan is to have forms automagically validated and, if no errors, give the user (developper) the ability to save them as objects in the db. Else, the error messages are set for user convenience. Here is an example of a YAML file for the action "/user/create", located in .../root/forms/user/create.yaml: -------------------------------------------------------- name: UserCreateForm # optional, automatically computed method: post rdbo: User # class of the rdbo object, used to load/save objects and also for field init (see below, types are sometimes missing, but it works) fields_order: - login - disp_name - mail - disp_mail - home_page - pass - pass2 - submit fields: login: label: Login validate: /^.{4\,40}$/, /^\w*$/ message: Between 4 and 40 characters, Only alphanumeric characters required: 1 disp_name: label: Real name (public) validate: /^.{0\,50}$/, /^[\w\.-\(\)]*$/ message: Max 50 characters, Forbidden character(s) mail: label: Real Email type: email message: Invalid Email required: 1 disp_mail: label: Displayed Email (public) validate: /^.{0\,80}$/ message: Max 80 characters home_page: label: URL validate: /^.{0\,100}$/ message: Invalid URL pass: label: Password type: password validate: /^.{4\,40}$/ required: 1 message: Between 4 and 40 characters pass2: label: Password confirmation type: password validate: /^.{4\,40}$/ message: Between 4 and 40 characters required: 1 submit: type: submit -------------------------------------------------------- I haven't packaged it yet and I think it is too early (despite the "release early, release often" moto) so I can't upload it to CPAN but I have some question to ask to you all: - Is the name I gave a good name? I don't think so. I think it should mention the fact that it also concerns RDBO. - Are you interested in a module like this? I'm pretty sure somebody is ;-) I'm the first ;-) - What are your requests / suggestions about a module like this? Feel free to ask questions if my explanation wasn't enough. - Should I keep the validation system like this, or should I create validation classes (better IMHO)? For the moment the error messages are localized in the template with a macro. Thank you for your attention. Regards, -- \^/ -/ O \---------------------------------------- | |/ \| Alexandre (Midnite) Jousset | -|___|---------------------------------------- _______________________________________________ List: Catalyst@lists.rawmode.org Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/ Dev site: http://dev.catalyst.perl.org/