-----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 [EMAIL PROTECTED] 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----- _______________________________________________ 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 )