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/

Reply via email to