David Ayres wrote:
I've been working around this issue for literally years and finally have the
time to seek a real solution. :) I can't find much information, so I'm
assuming I'm just taking the wrong approach.

Whenever a form is posted, the text fields always show up in the
request.form, however any other type of form element that has not been given
a value does not show up. None of the fields have the ignore_empty
attribute. Besides using the missing= attribute, what other options are
there?

Most of my forms have optional fields and this is especially painful when
trying to use ZSQL Methods or when creating  multipage forms that refer to
earlier form values.

The specifications for forms only require certain "successful" controls to be submitted, and most browsers work this way. This is specially noticable with checkboxes, which when on are in the request and absent when off. See:

http://www.w3.org/TR/REC-html40/interact/forms.html#successful-controls

Frankly, I consider this behavior bizarre and unhelpful, but there's not much to be done about it protocol-side. I would imagine there's a hstorical reason.

For use in Zope, keep in mind that parameters for both Python scripts and Z SQL Methods allow for default values, so you don't have to rely on a parameter being present in the request. In ZPTs there's conditional expressions, and in DTML the 'missing' pseudo-attribute.

                --jcc

--
"Building Websites with Plone"
http://plonebook.packtpub.com/

Enfold Systems, LLC
http://www.enfoldsystems.com
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to