Hash: SHA1

J Cameron Cooper wrote:

> 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.

I would be willing to bet (a small amount ;) that the rationale was to
do with conserving bandwidth:  a classic "penny wise, pound foolish" error.

Because "hidden" form elements are always submitted, Zope offers a
pattern for dealing with this, most often used with checkboxes:

  <form action="process_form_submission" method="POST">
   <input type="hidden" name="possibly_missing:default:int"
          value="0" />
   <input type="checkbox" name="possibly_mission:boolean"
          value="1" />

This pattern guarantees that the field will be present in the
REQUEST.form dict:  the publisher uses the '...:default' value only if
no other value for that name is present, and strips of the ':default'
suffix during field conversion.

- --
Tres Seaver          +1 202-558-7113          [EMAIL PROTECTED]
Palladion Software   "Excellence by Design"    http://palladion.com
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

Zope maillist  -  Zope@zope.org
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to