On 24. mar. 2007, at 00.13, Alec Mitchell wrote:

It's a fundamental HTML form issue.  No matter what the name of the
field (e.g. even if it has a ':boolean'), if the checkbox is not
checked then the input is not included in the request (so the value
won't be changed).  It may be possible to use a hidden field with a
False value, so that something is always submitted.  IIRC Zope will
interpret two fields with the same name as a list of values (even
without ':list').  So a hidden field that is False and a checkbox that
is checked will give [False, True] which will evaluate to True in a
boolean context, but an unchecked checkbox and a hidden False value
will just give the False value from the hidden field.  If that doesn't
work, then I think js is the only way to do this without introspecting
the schema to see what boolean fields may have been missing from the
form.

Yes. of course the :default must be supplied or the checkbox will not be noticed by html. I somehow took this for granted and didn't mention it (sorry. my oversight), but i see now in boolean.pt widget template in AT that it is not included.

Zope has its own built-in form typecast for this:

<input type="checkbox" name="foobar:boolean" value="True" />
<input type="hidden" name="foobar:boolean:default" value="" />

Works for all cases i can find.

I don't have the 10 minutes i need to actually check it into AT and test that it works TTW right now, but i'll try to get it done tonight unless someone beats me to it.


--
__________________________________________________________________

Geir Bækholt     ·    Managing Director     ·    Plone Solutions

Consulting · Training · Development ·  http://plonesolutions.com
__________________________________________________________________




_______________________________________________
Framework-Team mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/framework-team

Reply via email to