[Catalyst] RDBO/RHTMLO integration with Catalyst - work in progress

Alexandre Jousset mid at gtmp.org
Sat Jul 21 13:59:24 GMT 2007


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      |
  -|___|----------------------------------------




More information about the Catalyst mailing list