Currently I am displaying multiple forms on one page via iframes, each calling the same controller. When only one form is displayed on the page, the form submits properly and validates etc. When two forms are displayed however, pressing submit merely refreshes the iframe. When I hit submit a second time, then the form acts as it should. It's like the form has to be "warmed up" before submitting. I imagine this has something to do with how the hidden form fields like formkey and named are stored in the session and checked later, but I do not understand how they work enough to resolve this. Any ideas? The code for the form controller and the controller that builds and displays the iframes is below.
#controller of form displayed in the iframe def buildPage(): content = [] appname = request.application data = xmltools.getData(request.vars.code, appname) template = xmltools.getTemplate(data.tag, appname) for i in template: if i.tag == "header": content.append(H1(i.text)) elif i.tag == "label": content.append(P(i.text)) elif i.tag == "database": form = SQLFORM(db[i.text]) form.vars.form_id = request.vars.code #form.vars.time = dt.datetime.now().strftime("%Y-%m-%d %H: %M:%S") if form.accepts(request.vars, session): response.flash='New Page entered' elif form.errors: response.flash='Check form for errors' content.append(form) else: el = xmltools.findElement(data, name=i.tag) if el is not None: for j in el: if j.tag == 'bulk_text': text = xmltools.parseBulk(j) for k in text: content.extend([k, BR()]) elif j.tag == 'bulk_checkbox': text = xmltools.parseBulk(j) for k in text: content.extend([INPUT (_type='checkbox'),k,BR()]) else: content.append(i.tag) return response.render('default/form.html',dict(page=DIV (*content))) #code of the controller that builds and displays the iframes def buildTabs(): if session.tabs is None: session.tabs = [] if session.tabNames is None: session.tabNames = 0 #if request.vars.code is not None: name = session.tabNames session.tabNames += 1 frame = IFRAME(_width='100%', _height='500px', _src=URL (r=request,f='buildPage',vars=request.vars)) tab = DIV(frame, A('close', _href='#', _class='close'), _name=name, _class='tab') session.tabs.append({'tab':tab, 'name':name, 'form':request.vars.code}) content = DIV(_id = 'tabCont') tabmenu = UL(_id='tabMenu') content.append(tabmenu) for i in session.tabs: tabmenu.append(LI(A(i['form'], _href='#'), _name=i['name'])) content.append(i['tab']) return content --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---