[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