[Html-widget] Template error with 1 element HW

Brian Kirkbride brian.kirkbride at deeperbydesign.com
Fri Sep 22 23:13:22 CEST 2006


A. Pagaltzis wrote:
> * Brian Kirkbride <brian.kirkbride at deeperbydesign.com> [2006-09-22 22:15]:
>> elements = form.elements.size == 1 ? [ form.elements ] : form.elements;
>> FOREACH element = elements;
> 
>     FOREACH element = form.elements.list
> 
> ?
> 
> Regards,

That was my first thought.  I've found a workaround, but here's what is 
happening and why.

form.elements returns a @list not a @$listref
TT promotes the single hashref returned (the container object) into a list
As a result the hashref is not treated by TT as a scalar
Checks for .size and using .list to turn it into a single-value-list fail

This didn't happen in TT-2.14 but is happening with TT-2.15, causing my 
previously mentioned ugly workaround of .size==0 to fail.

I fixed it for now with this:

IF form.elements.keys;
   form.elements.field_xml;
   form.elements.error_xml;
ELSE;
   FOREACH element = form.elements;
     element.field_xml;
     element.error_xml;
   END;
END;

Perhaps we need a method in H::W::Results that returns [ $self->get_elements ]?

sub get_elements_ref {
   return [ shift->get_elements ];
}

Someone please suggest a better name. :)

Best,
Brian



More information about the Html-widget mailing list