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