[Zope] Re: Form Variables

Tres Seaver tseaver at palladion.com
Wed Jun 15 14:10:57 EDT 2005


-----BEGIN PGP SIGNED MESSAGE-----
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" />
   ...
   </form>

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.
- --
===================================================================
Tres Seaver          +1 202-558-7113          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCsG8w+gerLs4ltQ4RAgtdAKDNsfY13APRfMb/IE1YdiOeuFj/ygCeOm59
RRem3eY4OAkiw34Oe+TPjqM=
=ZXs+
-----END PGP SIGNATURE-----



More information about the Zope mailing list