On 13 December 2010 21:07, Octavian Rasnita <[email protected]> wrote:
> From: "Toby Corkindale" <[email protected]>
>
> On 9 December 2010 19:24, Octavian Rasnita <[email protected]> wrote:
>>> Using Moose Roles for forms is awesome.
>>
>> I also agree with this idea, but the fact that the most used constraints, 
>> filters and validators should be also manually specified using Perl code is 
>> not so nice.
>> It would be nice to have a form processor like H::FF that provides many 
>> default HTML elements, constraints, filters and validators, and to be able 
>> to create custom elements, constraints, filters and validators using Moose 
>> roles, then to specify that those roles are used... using config files.
>
>> But.. That's what the custom fields, widgets, roles etc are there for.
>> Eg. If you need a field that can, say, only accept four characters and
>> they have to be a-d, then go in and make a custom field type that does
>> the check.. Then tell your designers to just say "type =>
>> 'mySpecialField'" when they need to use it.
>>
>> Or even better, develop entire classes of grouped widgets and their
>> validations, then get them to just incorporate those.
>> (Eg. an "Address" role, which brings in street, suburb, borough,
>> state, postcode, zip code, whatever.. and does all the validation..
>> You'll reuse that one a lot!)
>
>
> Yes, I wasn't very clear. The most important part is not the one that allow 
> creating custom fields, constraints or filters, but the one that talks about 
> using pre-defined very common fields.
> For example, if I just want to validate an email address, or some numbers, or 
> other simple things like these, I don't want to write any kind of code if 
> with H::FF I can just write a short code in a configuration file.
> It is more simple to write
>
> <constraint>
>  type Email
> </constraint>
>
> ...than to write Perl code and apply a Moose role to a certain field.

It's not that hard, it's just:
has_field 'email_address'=> ( type => 'Email' );

>> Actually, I guess that is possible to create them using Moose with H::FF 
>> although I am not sure.
>>
>> Ideally, the web designers that don't know Perl at all should be able to 
>> change the design of the forms at least.
>
>> Agreed, and this is where neither FormFu or FormHandler succeeds.
>
> True, but for simple layouts, H::FF requires less effort for coding.
> I became interested in H::FH for using it in the case of more complex forms, 
> especially after I heard that it is faster than H::FF, but it is not 
> acceptable at all to use html code as strings in Perl code.
>
> The development version of H::FF also uses Moose, so only the fact that H::FH 
> uses moose is not a relevant advantage.
>
>
>> FormFu's yaml syntax ends up being horribly complicated, and
>> FormHandler's Perl code is not much clearer.
>
>
> True, but FormFu can also use Config::General code which is much clearer (or 
> other config formats accepted by Config::Any).
>
> It would be OK if H::FH would allow creating custom elements and validators, 
> filters... using Moose, but only generic elements, not related with any form, 
> and then allow us to use configuration files for using those elements and 
> constraints. It is not nice at all to need writing Perl code using Moose for 
> just creating an HTML form, but each one with his preferences. :-)



But you can do that if you want..
If you're just doing simple stuff, like name-of-field + type-of-field,
then you could do something like this:

  my $form = HTML::FormHandler->new(
    item => $c->model('DB::User')->find($id),
    field_list => YAML::Load("form.yaml")
  );

Where form.yaml looks a bit like:

---
username:
    - type: Text
    - required: 1
email_address:
    - type: Email
    - required: 1
favourite_colour:
    - type: Select
    - options:
        - blue
        - red
        - green
        - orange
        - yellow

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to