Hi Anthony -- My issue was that I wanted to change the value of the hidden field dynamically, i.e. after its value was set in SQLFORM.
Nosing around in the code, I did find my ultimate answer. The FORM object holds the hidden attributes in an attribute... called "hidden". I could go edit the hidden field value directly and my new value is rendered when the xml method is called to build the view. form.attributes['hidden']['a'] = 'new value' -- Joe On Monday, August 27, 2018 at 6:39:50 AM UTC-7, Anthony wrote: > > From the book: > > form = SQLFORM(...,hidden=...) > > causes the hidden fields to be passed with the submission, no more, no > less. form.accepts(...) is not intended to read the received hidden > fields and move them into form.vars. The reason is security. Hidden fields > can be tampered with. So you have to explicitly move hidden fields from the > request to the form: > > 1 > 2 > > form.vars.a = request.vars.aform = SQLFORM(..., hidden=dict(a='b')) > > > > Unfortunately, the code in that last example is incorrect -- line 1 should > go *after* line 2. > > So, you can add values from request.vars to form.vars before calling > .validate() or .process(), and the values will be available in any > onvalidation callback (of course, you can also refer directly to > request.vars anywhere). > > Anthony > > > On Monday, August 27, 2018 at 12:37:57 AM UTC-4, Joe Barnhart wrote: >> >> So I'm trying to use a hidden field to create some unique behavior in a >> form. I want to send out the field when the form is first created (using >> the hidden=dict(...) keyword on SQLFORM). But later, while processing the >> form through the error phase, I want to update that value to a different >> value using a "form.vars" or "request.post.vars" kind of mechanism. But >> form.vars does not have hidden fields, and putting in a matching value for >> my hidden field is ignored when the form is passed back. >> >> I can't change its value in the SQLFORM() process because the new value >> of the field is only known AFTER form creation and submission. When it >> comes back, THEN I know what I want the value to be, but by this time the >> SQLFORM method has re-run and the value of the hidden field is fixed. >> >> I'd like something like: >> >> form = SQLFORM(.... hidden=dict(a='b') >> . . . >> if form.validate(): >> . . . >> elif form.errors: >> form.var.a = 'c' >> >> What am I missing? Are hidden fields dumb, one-way-trip only fields? >> Are they not modifiable along with the other fields? >> >> -- Joe >> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.