The following new features have been added to formfu...

*** $form->auto_fieldset( 1 )

This is suitable for most typical forms, and means you can generally
ignore fieldsets.
auto_fieldset(1) immediately adds a fieldset element to the form.
Thereafter, $form->element() will add elements to the fieldset, rather
than the form
(or to the last fieldset, if there's more than 1).

If you add another fieldset, that gets added to the form, not the
existing fieldset, as fieldsets shouldn't be nested.
Any further elements will be added to that second fieldset, instead of
the first.

Also, you may pass a hashref to auto_fieldset(), and this will be used
to set defaults for the first fieldset created.

Consider the following convoluted config:

---
elements:
 - type: fieldset
   legend: The Form
   elements:
     - type: text
       name: name
     - type: text
       name: age
 - type: fieldset
   elements:
     - type: submit
       name : submit

This is much clearer:

---
auto_fieldset:
 legend: The Form
elements:
 - type: text
   name: name
 - type: text
   name: age
 - fieldset
 - type: text
   name: submit

*** AutoSet

There is also a new AutoSet constraint.
(The 'In' constraint from HTML::Widget has been renamed 'Set' in HTML::FormFu)

The AutoSet constraint is only for use with 'select' and 'radiogroup'
elements (or, specifically, anything which inherits from
HTML::FormFu::Element::group).

It ensures the input value is one of the set of values defined in the
element options.
(similar to HTML::Widget::Element::Select's constrain_values() setting)

 - type: select
   values: [yes, no]
   constraints: [AutoSet]

... is the same as:

 - type: select
   values: [yes, no]
   constraints:
     - type: Set
       set: [yes, no]

*** parent(), form()

And for anyone interested in developing their own elements, constraints, etc,
all elements now have parent() and form() methods.

For any element added directly to a form, parent() will return a
reference to the form.
For any element added to a fieldset or other block, parent() returns a
reference to that fieldset or block.
form() automatically traverses the trail of parents to return a
reference to the form.

All constraints, filters, deflators and inflators also have parent()
and form() methods.
Unlike HTML::Widget, these constraints, etc are always immediately
attached to the relevant form field, and never to the form or block
element.
This means that inside the constraint (or whatever), parent() always
return a reference to the relevant form field element.
This is how, for example, the AutoSet constraint works, automatically
getting the list of valid values each time the constraint is run.

*** Regexp::Common

The Regex constraint also now has support for Regexp::Common.
So, if you wanted to check against Regexp::Common's
   $RE{URI}{HTTP}{ -scheme => 'https?' }
to allow both secure and non-secure url's, you can now do:

   $field->constraint('Regex')->common([ 'URI', 'HTTP', { -scheme =>
'https?' } ]);

or, in yaml:

elements:
 - type: text
   name: foo
   constraints:
     - type: Regex
       common: [URI, HTTP, {-scheme, https?}]

*** Localisation

Just as the field methods label(), comment(), value() and default()
have the variants:
   label_xml()
   comment_xml()
   value_xml()
   default_xml()
to ensure that the supplied string isn't xml-escaped...

There are new variants:
   label_loc()
   comment_loc()
   value_loc()
   default_loc()
to allow you to load your label from the I18N object.

---
elements:
 - type: text
   name: name
   label_loc: label_name
 - type: text
   name: age
   label_loc: label_age

Keep an eye out for an upcoming feature that will give you control
over auto-generating the I18N key. For example, the above yaml will
become something like this:

---
auto_label: label_%n
elements:
 - type: text
   name: name
 - type: text
   name: age

Well, I think that's all for now, though I'm sure you can guess that
more will be coming soon!

Cheers,
Carl

_______________________________________________
Html-widget mailing list
Html-widget@lists.rawmode.org
http://lists.rawmode.org/cgi-bin/mailman/listinfo/html-widget

Reply via email to